2016-09-24 32 views
0

使用EXEC和選擇我有我的程序錯誤:在相同的程序

DECLARE @StockA table (GoodID int,NominalQty decimal(16,2),ActualQty decimal(16,2)) 

    INSERT INTO @StockA(GoodID,NominalQty,ActualQty) 
    EXEC ('INV.[usp_GetStorageAvailability] ' + @SysYear +',"2015-01-01",1') 

    UPDATE @ReqItems 
    SET Stock = S.ActualQty , Rem = (S.ActualQty - R.Qty) FROM @ReqItems R JOIN @StockA S on R.GoodID = S.GoodID 

    DECLARE @HasMinus tinyint 
    SET @HasMinus = (SELECT TOP 1 * FROM @ReqItems WHERE Rem < 0) 

    IF @HasMinus > 0 begin 
    DECLARE @GC nvarchar(10) 
    SET @GC = (SELECT TOP 1 GoodCode FROM @ReqItems WHERE Rem < 0) 
    SET @Outcome = 0 
    SET @Descr = 'XZY' 
    end 


    SELECT @Outcome,@Descr 

,我得到以下錯誤以下語句:

Only one expression can be specified in the select list when the subquery is not introduced with EXISTS. 

我應該怎麼辦?

感謝

回答

1

的問題是在這裏:

SET @HasMinus = (SELECT TOP 1 * FROM @ReqItems WHERE Rem < 0) 

我認爲錯誤是相當清楚的。 *涉及多列。你需要選擇一個:

SET @HasMinus = (SELECT TOP 1 ?? FROM @ReqItems WHERE Rem < 0); 

我不知道你想要的列來選擇,但是。

如果你只是想一個數,你可以這樣做:

SELECT @HasMinus = COUNT(*) FROM @ReqItems WHERE Rem < 0; 

這可能是你的代碼的意圖。 (請注意,SET不是必需的。)