sql server中的存储过程里调用存储过程

 

ContractedBlock.gif ExpandedBlockStart.gif Code

ALTER PROCEDURE dbo.aspnet_Profile_SetProperties
    
@ApplicationName        nvarchar(256),
    
@PropertyNames          ntext,
    
@PropertyValuesString   ntext,
    
@PropertyValuesBinary   image,
    
@UserName               nvarchar(256),
    
@IsUserAnonymous        bit,
    
@CurrentTimeUtc         datetime
AS
BEGIN
    
DECLARE @ApplicationId uniqueidentifier
    
SELECT  @ApplicationId = NULL

    
DECLARE @ErrorCode     int
    
SET @ErrorCode = 0

    
DECLARE @TranStarted   bit
    
SET @TranStarted = 0

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

    
/*调用另一个存储过程dbo.aspnet_Applications_CreateApplication*/
    
EXEC dbo.aspnet_Applications_CreateApplication @ApplicationName@ApplicationId OUTPUT

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

    
DECLARE @UserId uniqueidentifier
    
DECLARE @LastActivityDate datetime
    
SELECT  @UserId = NULL
    
SELECT  @LastActivityDate = @CurrentTimeUtc

    
SELECT @UserId = UserId
    
FROM   dbo.aspnet_Users
    
WHERE  ApplicationId = @ApplicationId AND LoweredUserName = LOWER(@UserName)
    
IF (@UserId IS NULL)
        
EXEC dbo.aspnet_Users_CreateUser @ApplicationId@UserName@IsUserAnonymous@LastActivityDate@UserId OUTPUT

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

    
UPDATE dbo.aspnet_Users
    
SET    LastActivityDate=@CurrentTimeUtc
    
WHERE  UserId = @UserId

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

    
IF (EXISTSSELECT *
               
FROM   dbo.aspnet_Profile
               
WHERE  UserId = @UserId))
        
UPDATE dbo.aspnet_Profile
        
SET    PropertyNames=@PropertyNames, PropertyValuesString = @PropertyValuesString,
               PropertyValuesBinary 
= @PropertyValuesBinary, LastUpdatedDate=@CurrentTimeUtc
        
WHERE  UserId = @UserId
    
ELSE
        
INSERT INTO dbo.aspnet_Profile(UserId, PropertyNames, PropertyValuesString, PropertyValuesBinary, LastUpdatedDate)
             
VALUES (@UserId@PropertyNames@PropertyValuesString@PropertyValuesBinary@CurrentTimeUtc)

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

    
IF@TranStarted = 1 )
    
BEGIN
        
SET @TranStarted = 0
        
COMMIT TRANSACTION
    
END

    
RETURN 0

Cleanup:

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

    
RETURN @ErrorCode

END

转载于:https://www.cnblogs.com/joe-yang/archive/2008/08/28/1278927.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值