也可以这么理解吧,就传一个SQL语句过来,然后执行。但是这个语句比较长的。可以这么模拟: select 字段1,字段2,... from table where araeID in (1,2,3,4,...(这里多写些数字)) 那么这个语句就会吵过4000,甚至更多。 赋值给参数。然后执行。 我现在想怎么样才能传更多的字符给参数,然后能执行呢?
比如某表是保存所有用户ID的,然后属于某个机构。 查询时候,可以选择机构,然后再选择机构下的某个用户。 如果用户选择基本全部用户。那么语句是这么写 select * from table where CustomeID in (选中的ID) --这里ID很多,然后就会越界 大家有没有特别好的方法处理啊!因为这个原因,所以SQL 语句就会超过4000,甚至更大
你的意思是,我选择ID时,首先插入在一个临时表。 然后在 join 表。这个插入也很花时间啊!
select a.* from TABLE a LEFT joni (选中的ID) b ON a.id=b.id WHERE b.id IS NOT null
改成varchar(8000)试试呢,会报错吗
如果是sql server 2005及以后的版本,可以改成:varchar(max) 这个最多支持2G个字节,肯定能满足你的要求的
能不能说的清楚点: select a.* from TABLE a LEFT join (1,2,3) b ON a.id=b.id WHERE b.id IS NOT null 如何得到b.id出来的。还有选中的ID,也可能会上万个啊!当然上万是极端的选择。也有可能而已 用表值函数,也要在表里确定哪些是用户选中的ID啊。他不是选全部,如果全部,当然可以当作一个表关联来查询了。就好像所有ID 在 表A(1,2,3,4) 其实用户只选择了。1,3,4 查询是,不就是这么写:select * from A where id in (1,3,4) 可是万一表更多ID,选中的也更多呢。这样语句就很长了!
select 字段1,字段2,... from table where araeID in (1,2,3,4,...(这里多写些数字))
那么这个语句就会吵过4000,甚至更多。
赋值给参数。然后执行。
我现在想怎么样才能传更多的字符给参数,然后能执行呢?
1、创建一个表值函数
2、用表值函数把1,2,3,4,...(这里多写些数字)转换成一个表
3、where那里in这个表值函数转换出来的表,或者直接在from中join
查询时候,可以选择机构,然后再选择机构下的某个用户。
如果用户选择基本全部用户。那么语句是这么写
select * from table where CustomeID in (选中的ID) --这里ID很多,然后就会越界
大家有没有特别好的方法处理啊!因为这个原因,所以SQL 语句就会超过4000,甚至更大
然后在 join 表。这个插入也很花时间啊!
select a.* from TABLE a LEFT joni (选中的ID) b ON a.id=b.id
WHERE b.id IS NOT null
改成varchar(8000)试试呢,会报错吗
如果是sql server 2005及以后的版本,可以改成:varchar(max) 这个最多支持2G个字节,肯定能满足你的要求的
select a.* from TABLE a LEFT join (1,2,3) b ON a.id=b.id
WHERE b.id IS NOT null
如何得到b.id出来的。还有选中的ID,也可能会上万个啊!当然上万是极端的选择。也有可能而已
用表值函数,也要在表里确定哪些是用户选中的ID啊。他不是选全部,如果全部,当然可以当作一个表关联来查询了。就好像所有ID 在 表A(1,2,3,4) 其实用户只选择了。1,3,4
查询是,不就是这么写:select * from A where id in (1,3,4)
可是万一表更多ID,选中的也更多呢。这样语句就很长了!
我也知道这个很影响性能。不知道还有没有更好的方法?
@ExeSQL Nvarchar(max) --传递过来的SQL语句,然后执行。这个只是举例
) as
begin
exec @ExeSQL
end