EXECUTE,按照联机手册上的说法
[N] 'tsql_string '
是一个常量,tsql_string 可以是 nvarchar 或 varchar 数据类型。如果包含 N,则该字符串将解释为 nvarchar 数据类型,最大值为服务器的可用内存。如果字符串长度超过 4,000 个字符,则把多个局部变量串联起来用于 EXECUTE 字符串。
也就是说如果我的SQL语句(varchar类型)超过8000个字符的话,我可以采用拼凑:
exec(@[email protected])
是这个意思吧?
但是我在实际使用时确不行,我就是采用:
EXEC 'str1 ' + 'str2 ' + 'str3 ' + ... + 'strn '
运行报错,结果我改成:
PRINT 'str1 ' + 'str2 ' + 'str3 ' + ... + 'strn '
发现,输出的语句是截取了的,并不是我的完整的SQL语句(刚好是我的SQL语句的前8000个字符),所以这样当然会报错。
请问我这个该怎么办呀?我这是一个动态建存储过程的语句,语句代码肯定超过8000个字符了,我该怎么办?谁能帮帮我呀?
问题解决了我可以另外加分的!!!
谢谢!!!
------解决方案--------------------
帮你顶
------解决方案--------------------
也就是说如果我的SQL语句(varchar类型)超过8000个字符的话,我可以采用拼凑:
exec(@[email protected])
是这个意思吧?
但是我在实际使用时确不行,我就是采用:
EXEC 'str1 ' + 'str2 ' + 'str3 ' + ... + 'strn '
---------------------------------------------------
LZ 好像不是这样写的吧,()一定要加上,
运行报错,不知道是什么错误,如果EXEC 里面带有多个GO是不行的
另外用 PRINT 一次最多就只能打印出8000个字符,不管怎么写都没用
------解决方案--------------------
replace,left,right,substring等字符串函数,不能直接用在EXEC里面。