T-Sql

ASE 中 varchar(max) 的等價物

  • October 28, 2020

varchar(max)ASE中的 SQL Server 數據類型等價物是什麼?

ASE 我指的是過去被稱為 Sybase ASE 的東西,它現在歸 SAP 所有。

我正在嘗試執行一段超過 8,000 個字元的動態構造的 T-SQL。

如果我用 聲明一個變數varchar(max),ASE 會阻塞:

關鍵字“max”附近的語法不正確。

我的下一個想法是嘗試text數據類型。可惜:

您為包含“立即執行”命令字元串的變數指定了不正確的數據類型。

一個最小的、完整的、可驗證的例子:

DECLARE @cmd varchar(max) --change this to varchar(4000) and it works
SET @cmd = 'SELECT 1;'
EXEC (@cmd);
GO

將變數聲明更改為text或任何適合您的目的。我需要執行一個可能有 50,000 個字元長的動態命令。

或者,我可以使用游標,但我不熟悉游標在 ASE 上的工作方式。

請注意,在 SQL Anywhere 中,您可以將 varchar(max) 數據類型的等價物定義為declare @cmd long varchar;,但這在 ASE 中不起作用。

ASE 的 (var)char 最大值為 16384。(假設 ASE 15.x/16.x)

如果查詢可以分成塊,每個塊不大於 16K,那麼您可以嘗試在execute()呼叫中連接它們。

execute()命令的文件中:

對文字字元串提供的字元數沒有限制。

範例 6(相同連結)我們看到一個簡單的範例:

execute ('select ' + @columname + ' from ' + @tablename + ' where id=3')

引用自:https://dba.stackexchange.com/questions/278321