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(相同链接)我们看到一个简单的示例: