T-Sql
ASE 中 varchar(max) 的等價物
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')