【发布时间】:2011-11-16 11:46:08
【问题描述】:
我想执行大约 10,000 个字符的动态 SQL 语句。
当我使用 sp_executesql 如下:
DECLARE @stmt varchar(MAX)
SET @stmt = 'xxxxxxxx.................' which is about 10,000 characters
EXEC sp_executesql @stmt
我收到以下错误
The character string that starts with ' select t1.e_reference xxxxxxxxxxx' is too long. Maximum length is 8000.
据我所知,我们可以使用 sp_executesql 来执行很长的语句,不是吗?
我使用的是 SQL Server 2008,企业版,64 位。
我怎样才能做到这一点?谢谢。
【问题讨论】:
-
用 nvarchar(max) 试试,它需要一个 nvarchar 参数,所以你的 varchar 必须被转换,导致问题的可能性很小
-
我也用 nvarchar(MAX) 试过了。但它不起作用。
-
你能显示更多你的实际查询吗?我无法重现这个。事实上,我什至在
sys.messages中都看不到那个错误。您在查询链接服务器吗? -
是的,马丁。我正在查询 Oracle 链接服务器。
-
链接服务器部分是一种重要信息,感谢 Martin 了解它
标签: sql-server sql-server-2008 tsql sp-executesql