新聞中心
如何解決SQL Server中傳入select語句in范圍參數(shù)呢?下面將為您解析產(chǎn)生該問題的原因,以及相應(yīng)的解決辦法,供您參考,希望對您有所啟迪。

columns :
customerCode string
customerName string
customerGroup string
customerRouteNum string
...........
現(xiàn)在為了查處選定的cusotmerCode的Customer的全部信息并顯示在界面上(總共的customer數(shù)量為11029),每次讀一個,顯然很慢,因為可以多選,可能1個,可能是所有,所以讀出所有然后剔出未選的,效率也不高。
因此開始采用存儲過程:
CREATE PROCEDURE TS_GetCustomersByNames
( @custCodes nvarchar(3700)
) AS
select * from customer
where customerName in (@custNames)
一直得不到正確結(jié)果,發(fā)現(xiàn)不論傳入?yún)?shù) @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)
當(dāng)然是有正確結(jié)果的。
那原因是什么呢?
原因是: @CustCodes作為參數(shù)傳入時,編譯處理導(dǎo)致實際執(zhí)行的不同于語句(X)。
但我們就是要得到語句(X)的結(jié)果,怎么解決呢?辦法是使用Exec執(zhí)行,如下:
declare @sql nvarchar(3800)
set @sql = 'select * from customer where customerCode in ( '+ @custCodes + ')'
exec ( @sql )
GO
新聞標題:如何解決SQLServer中傳入select語句in范圍參數(shù)
網(wǎng)址分享:http://m.fisionsoft.com.cn/article/dposghd.html


咨詢
建站咨詢
