Stored procedure incorrect?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • stockton
    New Member
    • Jul 2008
    • 6

    Stored procedure incorrect?

    I have written the following Stored Procedure and need input as to what could be wrong with my coding or is there a possibility that not getting the correct results is not in the procedure at all?
    Code:
    ALTER PROCEDURE spIssueScannedTickets
            @iEventID int,
            @MemberNum nvarchar(12),
            @BatchSize int,
            @FirstNumber nvarchar(12),
            @LastNumber nvarchar(12),
            @SlotsBalance int,
            @TableBalance int,
            @BonusBalance int,
            @UserID int
    AS
    DECLARE @Result int
    SET @Result = 0
    BEGIN TRANSACTION
    if  (@SlotsBalance>0)
    INSERT INTO TicketsIssued (Date, EventID, MemberNumber, EarnType, NumTicketsIssued, Turnover, UserID)
             VALUES (GETDATE(),@iEventID,@MemberNum, 'Slots', @SlotsBalance, 0, @UserID)
    SELECT @Result = @@error IF @Result <> 0 BEGIN ROLLBACK TRANSACTION RETURN @Result END
    
    if  (@TableBalance>0)
    INSERT INTO TicketsIssued (Date, EventID, MemberNumber, EarnType, NumTicketsIssued, Turnover, UserID)
             VALUES (GETDATE(),@iEventID,@MemberNum, 'Tables', @TableBalance, 0, @UserID)
    SELECT @Result = @@error IF @Result <> 0 BEGIN ROLLBACK TRANSACTION RETURN @Result END
    
    if  (@BonusBalance>0)
    INSERT INTO TicketsIssued (Date, EventID, MemberNumber, EarnType, NumTicketsIssued, Turnover, UserID)
             VALUES (GETDATE(),@iEventID,@MemberNum, 'Bonus', @BonusBalance, 0, @UserID)
    SELECT @Result = @@error IF @Result <> 0 BEGIN ROLLBACK TRANSACTION RETURN @Result END
    
    INSERT INTO BundlesIssued (MemberNumber, EventID, BundleSize, FirstNumber, LastNumber, DateIssued, UserID, Invalid)
            VALUES (@MemberNum, @iEventID, @BatchSize, @FirstNumber, @LastNumber, GETDATE(), @UserID , 0x00)
    SELECT @Result = @@error IF @Result <> 0 BEGIN ROLLBACK TRANSACTION RETURN @Result END
    
    COMMIT TRANSACTION
    SELECT @Result = @@error IF @Result <> 0 RETURN @Result
    SET @Result = @BatchSize RETURN @Result
    GO
    As far as I am aware what I have written should give an "all or nothing situation". In other words either all tables are updated or none are.
    Comments please.
    Last edited by stockton; Jul 31 '08, 12:24 PM. Reason: Remove blank lines in code
  • ck9663
    Recognized Expert Specialist
    • Jun 2007
    • 2878

    #2
    Looks like it's rolling back.

    Try executing it as a series of t-sql first. Define the parameters as variables and hard code the values.

    Try putting a PRINT 1 or SELECT 1 (then SELECT 2..then 3...then 4) on all rollback. You'll see where it's falling. Like DEBUG mode

    -- CK

    Comment

    Working...