@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
@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
@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