2010-10-16 84 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