比如我有个存储过程
create procedure pageQuery(
@ExeSQL varchar(4000) --传递过来的SQL语句,然后执行。这个只是举例
) as
begin
exec @ExeSQL
end
但是现在可能我传递的参数@ExeSQL,会超过该值,就会自动被截取了字符。执行肯定会出错。
所以我打算用 @ExeSQL ntext
但是后面 exec @ExeSQL 就出问题, EXECUTE <procname> 中,procname 只能是类型为 char、varchar、nchar 或 nvarchar 的文字或变量。
我应该怎么转换下。
我知道可能大家会说,SQL语句怎么会有那么长,这么长在性能上也有影响。这个我知道,但是我现在是必须要这么做,先不考虑性能问题。大家有什么办法啊!谢谢
ntext nvarchar(max) exec
------解决方案--------------------
改成varchar(8000)试试呢,会报错吗
------解决方案--------------------
如果是sql server 2005及以后的版本,可以改成:
varchar(max) 这个最多支持2G个字节,肯定能满足你的要求的
------解决方案--------------------
create procedure pageQuery(
@ExeSQL Nvarchar(max) --传递过来的SQL语句,然后执行。这个只是举例
) as
begin
exec @ExeSQL
end
------解决方案--------------------
varchar(max) 或者text类型