aspnet_Roles_CreateRole:创建用户角色的存储过程
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[aspnet_Roles_CreateRole]'and OBJECTPROPERTY(id, 
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)N
'IsProcedure'= 1)
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
drop procedure [dbo].[aspnet_Roles_CreateRole]
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
GO
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
SET QUOTED_IDENTIFIER OFF 
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
GO
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
SET ANSI_NULLS ON 
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
GO
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
--此存储过程主要是创建用户角色
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
CREATE PROCEDURE dbo.aspnet_Roles_CreateRole
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
@ApplicationName  nvarchar(256),
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
@RoleName         nvarchar(256)
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
AS
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
BEGIN
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
--声明变量DECLARE
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
    DECLARE @ApplicationId uniqueidentifier
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
SELECT  @ApplicationId = NULL
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
DECLARE @ErrorCode     int
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
SET @ErrorCode = 0
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
DECLARE @TranStarted   bit
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
SET @TranStarted = 0
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
--@@TRANCOUNT:返回当前连接的事务数
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
    IF@@TRANCOUNT = 0 )
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
BEGIN
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
--使 @@TRANCOUNT 递增 1
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
        BEGIN TRANSACTION
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)        
SET @TranStarted = 1
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
END
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
ELSE
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)        
SET @TranStarted = 0
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
--执行存储过程,并返回参数
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
    EXEC dbo.aspnet_Applications_CreateApplication @ApplicationName@ApplicationId OUTPUT
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
--返回最后执行的 Transact-SQL 语句的错误代码,如正确执行返回0
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
    IF@@ERROR <> 0 )
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
BEGIN
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)        
SET @ErrorCode = -1
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)        
--GOTO语句执行跳转
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
        GOTO Cleanup
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
END
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
--是否已经存在要创建的ID
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
    IF (EXISTS(SELECT RoleId FROM dbo.aspnet_Roles WHERE LoweredRoleName = LOWER(@RoleNameAND ApplicationId = 
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
@ApplicationId))
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
BEGIN
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)        
SET @ErrorCode = 1
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)        
GOTO Cleanup
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
END
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
INSERT INTO dbo.aspnet_Roles
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)                (ApplicationId, RoleName, LoweredRoleName)
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)         
VALUES (@ApplicationId@RoleNameLOWER(@RoleName))
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
IF@@ERROR <> 0 )
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
BEGIN
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)        
SET @ErrorCode = -1
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)        
GOTO Cleanup
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
END
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
IF@TranStarted = 1 )
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
BEGIN
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)        
SET @TranStarted = 0
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)        
COMMIT TRANSACTION
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
END
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
RETURN(0)
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)Cleanup:
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
IF@TranStarted = 1 )
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
BEGIN
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)        
SET @TranStarted = 0
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)        
--将显式事务或隐性事务回滚到事务的起点或事务内的某个保存点
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
        ROLLBACK TRANSACTION
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
END
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)    
RETURN @ErrorCode
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
END
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
GO
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
SET QUOTED_IDENTIFIER OFF 
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
GO
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
SET ANSI_NULLS ON 
ASPNETDB-存储过程研究(aspnet_Roles_CreateRole)
GO

心得:在写存储过程中,要注意事务的回滚和事务执行的状态。
@@ERROR:是否正确执行
@@TRANCOUNT :当前连接事务数
EXEC dbo.aspnet_Applications_CreateApplication @ApplicationName, @ApplicationId OUTPUT:exec,执行存储过程,output返回的参数
BEGIN TRANSACTION:开始事务
COMMIT TRANSACTION:提交事务
ROLLBACK TRANSACTION:回滚事务

相关文章:

  • 2021-10-20
  • 2022-12-23
  • 2022-02-03
  • 2021-09-14
  • 2022-12-23
  • 2021-12-22
  • 2022-12-23
  • 2021-09-02
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-02-08
  • 2021-08-04
  • 2021-07-20
  • 2021-08-25
  • 2021-06-01
相关资源
相似解决方案