如何解决SQLServer中传入select语句in范围参数

如何解决SQL Server中传入select语句in范围参数呢?下面将为您解析产生该问题的原因,以及相应的解决办法,供您参考,希望对您有所启迪。

columns :
 customerCode string
 customerName string
 customerGroup string
 customerRouteNum string
 ...........

现在为了查处选定的cusotmerCode的Customer的全部信息并显示在界面上(总共的customer数量为11029),每次读一个,显然很慢,因为可以多选,可能1个,可能是所有,所以读出所有然后剔出未选的,效率也不高。

因此开始采用存储过程:

CREATE PROCEDURE TS_GetCustomersByNames
( @custCodes nvarchar(3700)
) AS

select * from customer
where customerName in (@custNames)

一直得不到正确结果,发现不论传入参数 @custNames =  N'''Taste Of Punjab (Tsim Sha Tsui)'',''Lily Food Wholesales (Tuen Mun)'''
还是 @custNames =  N'Taste Of Punjab (Tsim Sha Tsui),Lily Food Wholesales (Tuen Mun)'(注:其实这种明显不对,试验一下而已)

但如果用select * from customer
where customerName in (''Taste Of Punjab (Tsim Sha Tsui)'',''Lily Food Wholesales (Tuen Mun)')----  (X)   
当然是有正确结果的。

那原因是什么呢?
原因是: @CustCodes作为参数传入时,编译处理导致实际执行的不同于语句(X)。

但我们就是要得到语句(X)的结果,怎么解决呢?办法是使用Exec执行,如下:
declare @sql nvarchar(3800)
set @sql = 'select * from customer where customerCode in ( '+ @custCodes + ')'
exec ( @sql )
GO

分享名称:如何解决SQLServer中传入select语句in范围参数
链接分享:http://www.shufengxianlan.com/qtweb/news17/431817.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联