2013-11-15 52 views
0

我在下面的代碼中嘗試更改SQL查詢,以便它將運行於特定集中的所有WhseID值,而不僅僅是單個的WhseID由用戶:將整數參數中的查詢更改爲集

CREATE PROCEDURE [dbo].[sp_c_IMPriceChangeList] 
     @WhseID varchar(3), 
     @CompDate datetime 
    as 
    BEGIN 
    Declare @whseKey int 
    set @whseKey = (select whsekey from timwarehouse where whseid = @whseid) 

我已經嘗試過改變到:

CREATE PROCEDURE [dbo].[sp_c_IMPriceChangeList_Catalog] 
     @CompDate datetime 
    as 
    BEGIN 
     Declare @whseKey int 

     set @whseKey = (select whsekey from timwarehouse 
         where whseid in ('001','010','011','012','013','014','015')) 

但是,這給了我一個錯誤,指出一個子查詢以下等號不能返回多個值。我如何進行必要的更改?

感謝您的幫助。

+0

機頂盒1.但是,這將帶給你最富有的1這可能不是想要的人。 –

+1

你會不知何故必須使用循環,但很難幫助你。 –

+0

您只能在變量中設置一個整數。您的子查詢返回多個 –

回答

0

VariableINT類型的,但您的查詢返回一個Table,您不能在表保存到INT類型你需要創建的表變量和返回表varible或代碼以這樣的方式查詢的變量只返回一個單一的INT值。或者你可以簡單地選擇的結果,它會返回結果集,像這樣的東西..在你的子查詢

CREATE PROCEDURE [dbo].[sp_c_IMPriceChangeList] 
AS 
BEGIN 
    SELECT whsekey FROM timwarehouse 
    WHERE whseid IN ('001','010','011','012','013','014','015') 
END