2011-06-27 43 views
0

可能重複:
T-SQL stored procedure that accepts multiple Id values
Parameterizing a SQL IN clause?選擇從一個varchar值在聲明

我有誰有一個過濾系統,選擇值的存儲過程。 想象一個表

ColA | ColB | ColC | 

'A' 12  1 
'B' 13  2 
'C' 14  3 

我需要給存儲過程的那些COLC值的列表中選擇所需的值,例如(1,3) 會給我「A」和「C」。

我知道這是可以做到像在聲明:

Select * 
from Table 
where ColC in (1,3) 

但是,如何讓這個充滿活力?一個解決方案將是在一個Varchar變量中構建sql命令,如

SET @MyList ='(1,3)' 
SET @SQL = ' 
    Select * 
    from Table 
    where ColC in ' + @MyList 

And then execute @SQL 

但這是最好的方法嗎?爲了使這樣的動態命令不是太重?

感謝您的建議。

+0

您正在使用哪個版本的SQL Server? – AdaTheDev

+0

我不會相信這個用戶輸入沒有額外的驗證(ID列表)。 –

+0

Sql server 2008對不起,我編輯標籤 – bAN

回答

1

關於如何pass arrays to stored procedures有很多不同的選項,但是,通常的做法是構建查詢,就像你已經展示的一樣,因此我認爲這是最好的解決方案。

編輯:Arrays in SQL 2008仍然顯示構建查詢作爲第一種方法。

+0

該鏈接已過時。絃樂建築的常見做法並不是最好的方法。 http://stackoverflow.com/q/43249/27535 – gbn

+0

謝謝,但是,它仍然適用。如果你不這麼認爲,讓我們看看你提出了一個更有效的方法。 – Tsar

+0

我添加的鏈接與您的新鏈接相匹配。這是參考源。我已經投票關閉,因爲這 – gbn