49 
 User_Insert
  @UserName            nvarchar(50),
  
@UserID              int OUTPUT
AS
BEGIN
  
DECLARE @ErrorCode int
  
SELECT  @ErrorCode = 0

  
DECLARE @TranStarted bit
  
SELECT  @TranStarted = 0

  
IF(@@TRANCOUNT = 0)
  
BEGIN
    
BEGIN TRANSACTION
      
SELECT @TranStarted = 1
    
END
  
ELSE
    
SELECT @TranStarted = 0

  
INSERT INTO [User]
  (
    
[UserName]
  )
  
VALUES
  (
    
@UserName
  )

  
IF(@@ERROR <> 0)
  
BEGIN
    
SELECT @ErrorCode = -1
    
GOTO   Cleanup
  
END

  
SELECT @UserID = @@identity

  
IF(@TranStarted = 1)
  
BEGIN
    
SELECT @TranStarted = 0
    
COMMIT TRANSACTION
  
END

Cleanup:

  
IF(@TranStarted = 1)
  
BEGIN
    
SET @TranStarted = 0
    
ROLLBACK TRANSACTION
  
END

  
RETURN @ErrorCode

END

 User_Select
  @UserID            int
AS
BEGIN
  
DECLARE @ErrorCode int
  
SELECT  @ErrorCode = 0

  
DECLARE @TranStarted bit
  
SELECT  @TranStarted = 0

  
IF(@@TRANCOUNT = 0)
  
BEGIN
    
BEGIN TRANSACTION
      
SELECT @TranStarted = 1
    
END
  
ELSE
    
SELECT @TranStarted = 0

  
SELECT    [UserID],
            
[UserName]
    
FROM   [User]
    
WHERE  [UserID] = @UserID

  
IF(@@ERROR <> 0)
  
BEGIN
    
SELECT @ErrorCode = -1
    
GOTO   Cleanup
  
END

  
IF(@TranStarted = 1)
  
BEGIN
    
SELECT @TranStarted = 0
    
COMMIT TRANSACTION
  
END

Cleanup:

  
IF(@TranStarted = 1)
  
BEGIN
    
SET @TranStarted = 0
    
ROLLBACK TRANSACTION
  
END

  
RETURN @ErrorCode

END

 User_Update
  @UserID              int,
  
@UserName            nvarchar(50)
AS
BEGIN
  
DECLARE @ErrorCode int
  
SELECT  @ErrorCode = 0

  
DECLARE @TranStarted bit
  
SELECT  @TranStarted = 0

  
IF(@@TRANCOUNT = 0)
  
BEGIN
    
BEGIN TRANSACTION
      
SELECT @TranStarted = 1
    
END
  
ELSE
    
SELECT @TranStarted = 0

  
UPDATE [User]
  
SET    [UserName] = @UserName
  
WHERE  [UserID] = @UserID

  
IF(@@ERROR <> 0)
  
BEGIN
    
SELECT @ErrorCode = -1
    
GOTO   Cleanup
  
END

  
IF(@TranStarted = 1)
  
BEGIN
    
SELECT @TranStarted = 0
    
COMMIT TRANSACTION
  
END

Cleanup:

  
IF(@TranStarted = 1)
  
BEGIN
    
SET @TranStarted = 0
    
ROLLBACK TRANSACTION
  
END

  
RETURN @ErrorCode

END

相关文章: