2010-10-16 86 views
0

我希望創建一個將多次插入並選擇一個存儲過程

A)檢查,看看是否TicketNumberInput在表Tix_number.TicketNumber的過程。

B)如果確實exisist,更新設置UID到@uid並設置Claimdate到GETDATE()

AND ...

C)中插入一條記錄到另一個表中的記錄(交易LOG TABLE)

如果記錄確實存在,只需在STATUS = 2(失敗)的事務日誌中添加一條記錄。

這是我的代碼到目前爲止,但它似乎沒有問題檢查IF語句和更新記錄並插入另一條記錄。如何將多個檢查添加到聲明中。開始結束似乎沒有工作

create procedure [dbo].[UpdateTicketNumber] 
@TicketNumberInput uniqueidentifier, 
@UID int 
as 
IF EXISTS(
BEGIN 
    SELECT * 
    FROM [tixtowin].[dbo].[Tix_Number] 
    where @TicketNumberInput = Tix_Number.TicketNumber) 
    PRINT 'CORRECT RECORD' 

    Update Tix_Number 
    Set Tix_Number.UID = @uid, ClaimDate = GETDATE() 
    where TicketNumber = @TicketNumberInput 

    /* Success - insert transaction message. Status = 1 */ 
    INSERT INTO [Tix_Transaction] 
    ([Tix_Number],[UID], [status], [Datetime]) 
    VALUES 
    (@TicketNumberInput, @UID, '1', GetDate()) 

    End 
    ELSE 

    /* Failed - insert transaction message. Status = 2 */ 
    INSERT INTO [Tix_Transaction] 
    ([Tix_Number],[UID], [status], [Datetime]) 
    VALUES 
    (@TicketNumberInput, @UID, '2', GetDate()) 

    PRINT 'INCORRECT RECORD' 

謝謝你的幫助!

回答

4

你沒有測試作爲你的IF的一部分。你需要測試,然後做點什麼:

create procedure [dbo].[UpdateTicketNumber] 
@TicketNumberInput uniqueidentifier, 
@UID int 

as 
IF EXISTS (SELECT NULL 
    FROM [tixtowin].[dbo].[Tix_Number] 
    where @TicketNumberInput = Tix_Number.TicketNumber) 
BEGIN 

    PRINT 'CORRECT RECORD' 

    Update Tix_Number 
    Set Tix_Number.UID = @uid, ClaimDate = GETDATE() 
    where TicketNumber = @TicketNumberInput 

    /* Success - insert transaction message. Status = 1 */ 
    INSERT INTO [Tix_Transaction] 
    ([Tix_Number],[UID], [status], [Datetime]) 
    VALUES 
    (@TicketNumberInput, @UID, '1', GetDate()) 

END 
ELSE 
BEGIN 
    /* Failed - insert transaction message. Status = 2 */ 
    INSERT INTO [Tix_Transaction] 
    ([Tix_Number],[UID], [status], [Datetime]) 
    VALUES 
    (@TicketNumberInput, @UID, '2', GetDate()) 

    PRINT 'INCORRECT RECORD' 
END