Connecting Tech Pros Worldwide Forums | Help | Site Map

Stored procedure incorrect?

Newbie
 
Join Date: Jul 2008
Posts: 4
#1: Jul 31 '08
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?
Expand|Select|Wrap|Line Numbers
  1. ALTER PROCEDURE spIssueScannedTickets
  2.         @iEventID int,
  3.         @MemberNum nvarchar(12),
  4.         @BatchSize int,
  5.         @FirstNumber nvarchar(12),
  6.         @LastNumber nvarchar(12),
  7.         @SlotsBalance int,
  8.         @TableBalance int,
  9.         @BonusBalance int,
  10.         @UserID int
  11. AS
  12. DECLARE @Result int
  13. SET @Result = 0
  14. BEGIN TRANSACTION
  15. if  (@SlotsBalance>0)
  16. INSERT INTO TicketsIssued (Date, EventID, MemberNumber, EarnType, NumTicketsIssued, Turnover, UserID)
  17.          VALUES (GETDATE(),@iEventID,@MemberNum, 'Slots', @SlotsBalance, 0, @UserID)
  18. SELECT @Result = @@error IF @Result <> 0 BEGIN ROLLBACK TRANSACTION RETURN @Result END
  19.  
  20. if  (@TableBalance>0)
  21. INSERT INTO TicketsIssued (Date, EventID, MemberNumber, EarnType, NumTicketsIssued, Turnover, UserID)
  22.          VALUES (GETDATE(),@iEventID,@MemberNum, 'Tables', @TableBalance, 0, @UserID)
  23. SELECT @Result = @@error IF @Result <> 0 BEGIN ROLLBACK TRANSACTION RETURN @Result END
  24.  
  25. if  (@BonusBalance>0)
  26. INSERT INTO TicketsIssued (Date, EventID, MemberNumber, EarnType, NumTicketsIssued, Turnover, UserID)
  27.          VALUES (GETDATE(),@iEventID,@MemberNum, 'Bonus', @BonusBalance, 0, @UserID)
  28. SELECT @Result = @@error IF @Result <> 0 BEGIN ROLLBACK TRANSACTION RETURN @Result END
  29.  
  30. INSERT INTO BundlesIssued (MemberNumber, EventID, BundleSize, FirstNumber, LastNumber, DateIssued, UserID, Invalid)
  31.         VALUES (@MemberNum, @iEventID, @BatchSize, @FirstNumber, @LastNumber, GETDATE(), @UserID , 0x00)
  32. SELECT @Result = @@error IF @Result <> 0 BEGIN ROLLBACK TRANSACTION RETURN @Result END
  33.  
  34. COMMIT TRANSACTION
  35. SELECT @Result = @@error IF @Result <> 0 RETURN @Result
  36. SET @Result = @BatchSize RETURN @Result
  37. GO
  38.  
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.

ck9663's Avatar
Expert
 
Join Date: Jun 2007
Posts: 1,925
#2: Jul 31 '08

re: Stored procedure incorrect?


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
Reply