首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

有个字符超过varchar(4000),该如何避免

2013-11-20 
有个字符超过varchar(4000),该如何处理。比如我有个存储过程create procedure pageQuery(@ExeSQL varchar(4

有个字符超过varchar(4000),该如何处理。
比如我有个存储过程
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
[解决办法]

引用:
比如某表是保存所有用户ID的,然后属于某个机构。
查询时候,可以选择机构,然后再选择机构下的某个用户。
如果用户选择基本全部用户。那么语句是这么写
select * from table where CustomeID in (选中的ID)  --这里ID很多,然后就会越界
大家有没有特别好的方法处理啊!

因为这个原因,所以SQL 语句就会超过4000,甚至更大


改成varchar(8000)试试呢,会报错吗
[解决办法]
引用:
你的意思是,我选择ID时,首先插入在一个临时表。
然后在 join 表。这个插入也很花时间啊!


如果是sql server 2005及以后的版本,可以改成:

varchar(max) 这个最多支持2G个字节,肯定能满足你的要求的
[解决办法]


create procedure pageQuery(
   @ExeSQL Nvarchar(max)  --传递过来的SQL语句,然后执行。这个只是举例
) as 
begin
     exec @ExeSQL
end

[解决办法]
varchar(max) 或者text类型

热点排行