2012-07-02 70 views
0

我寫了下面的存儲過程在SQL Server 2005中,我得到錯誤信息:消息102,15級,狀態1,

消息102,級別15,狀態1,過程sp_InsertCustTrans,12號線
不正確'@TrID'附近的語法。

我的存儲過程是:

ALTER PROCEDURE [dbo].[sp_InsertCustTrans] 
-- Add the parameters for the stored procedure here 
@CuID int, @TrType nvarchar(10), @TrAmt int 
AS 
BEGIN 
SET NOCOUNT ON; 
    declare @TrID int; 
    Select @TrID = MAX(TransactionID) from CustTrans; 
    if Isnull(@TrID) 
     @TrID = @TrID + 1 
    else 
     @TrID = 1 

-- Insert statements for procedure here 
if (@TrType = 'Deposit') 
    begin 
     INSERT INTO CustTrans (TransactionID, TransactionDate, CustID, TransactonType, CreditAmount) 
      Values(@TrID, GetDate(), @CuID, @TrType, @TrAmt); 
    end 
else 
    begin 
     INSERT INTO CustTrans (TransactionID, TransactionDate, CustID, TransactonType, DebitAmount) 
      Values(@TrID, GetDate(), @CuID, @TrType, @TrAmt); 
    end 
END 
GO 
+4

手動增加ID是一個可怕的想法,並對比賽條件開放。我假設你有一個同步計劃? – ChaosPandion

回答

4

所有的賦值操作必須以關鍵字set之前。

Set @TrID = @TrID + 1 

而且你正在使用ISNULL錯誤伊凡指出。 正確的用法是:

If @TrID Is Null 
+0

感謝您的指導。 –

+0

我有另一個問題無法檢查值: 如果(@TrID ='存款') 它去其他條件。這可能是什麼原因? –

+0

我能解決這個問題。事實上,這是我的錯誤:我將價值傳遞給@TrID而不是檢查它。所以,我必須是'If(@TrID =='Deposit')。 –

相關問題