一个工作流程启动的支持事务的存储过程

简介:
alter   PROCEDURE  pStartUpFlowEvent
(
    
@Result   int  output,
    
@FlowName   nvarchar ( 50 ),
    
-- @DealUsers ntext,
     @DealUser   nvarchar ( 50 ),
    
@OutOfDate   datetime ,
    
@IsAutoPassWhenOutDate   bit ,
    
-- @IsPass bit,
     @BusinessTableName   nvarchar ( 50 ),
    
@FlowStatusColumnName   nvarchar ( 50 ),
    
@BusinessPrimaryColumnName   nvarchar ( 50 ),
    
@BusinessPrimaryID   nvarchar ( 50 ),
    
@RequestContent   ntext ,
    
@FlowStatus   nvarchar ( 50 ),
    
@CreateUserID   int ,
    
@CreateTime   datetime
    
-- @ModifyUserID int,
     -- @ModifyTime datetime,
     -- @ModifyIP nvarchar(50)
                   
                     
)
-- -procedure name:pStartUpFlowEvent
--
-Author:Sam Lin
--
-Date:2009-06-08
--
-Memo:启动流程
AS
DECLARE   @FlowID   INT
DECLARE   @sql   NVARCHAR ( 1000 )
BEGIN
    
IF   EXISTS ( SELECT   1   FROM  flow  WHERE  BusinessTableName = @BusinessTableName   AND  BusinessPrimaryColumnName  =   @BusinessPrimaryColumnName   AND  BusinessPrimaryID = @BusinessPrimaryID )
    
BEGIN
        
PRINT   ' 0-The Same '
        
SET   @Result   =   0
        
RETURN   0
    
END
    
    
-- 开始事件
     BEGIN   TRAN
    
    
-- 插入Flow数据
     INSERT   INTO   [ Flow ] (
    
[ FlowName ] , [ DealUser ] , [ OutOfDate ] , [ IsAutoPassWhenOutDate ] , [ BusinessTableName ] , [ FlowStatusColumnName ] , [ BusinessPrimaryColumnName ] , [ BusinessPrimaryID ] , [ RequestContent ] , [ FlowStatus ] , [ CreateUserID ] , [ CreateTime ]
    )
VALUES (
    
@FlowName , @DealUser , @OutOfDate , @IsAutoPassWhenOutDate , @BusinessTableName , @FlowStatusColumnName , @BusinessPrimaryColumnName , @BusinessPrimaryID , @RequestContent , @FlowStatus , @CreateUserID , @CreateTime
    )
    
SET   @FlowID   =   @@IDENTITY
    
    
IF   @@ERROR   <>   0
    
BEGIN
        
-- 操作失败,则事务回滚
         ROLLBACK   TRAN
        
-- 返回存储
         set   @Result   =   - 1
        
PRINT   ' -1-Inserted Error '
        
RETURN   - 1
    
END
    
    
-- 插入FlowProducure
    
    
INSERT   INTO   [ FlowProducure ] (
    
[ PID ] , [ FlowID ] , [ FlowName ] , [ DealUser ] , [ OutOfDate ] , [ IsAutoPassWhenOutDate ] , [ FlowStatus ] , [ CreateUserID ] , [ CreateTime ]
    )
VALUES (
    
0 , @FlowID , @FlowName , @DealUser , @OutOfDate , @IsAutoPassWhenOutDate , @FlowStatus , @CreateUserID , @CreateTime
    )
    
    
IF   @@ERROR   <> 0
    
BEGIN
        
-- 操作失败,则事务回滚
         ROLLBACK   TRAN
        
-- 返回存储
         SET   @Result   =   - 1
        
PRINT   ' -1-Inserted Error '
        
RETURN   - 1
    
END
    
    
-- 更新业务表
     SET   @sql   =   ' UPDATE   ' +   @BusinessTableName   +   '  SET  '   +    @FlowStatusColumnName   +   ' '   +   @FlowStatus   +   '  WHERE  ' +    @BusinessPrimaryColumnName   +   ' '''   +   @BusinessPrimaryID   +   ''''
    
EXEC  sp_executesql  @sql
    
    
IF   @@ROWCOUNT   <>   1
    
BEGIN
        
-- 操作失败,则事务回滚
         ROLLBACK   TRAN
        
-- 返回存储
         SET   @Result   =   - 9
        
PRINT   ' -9-Cannot find the result '
        
RETURN   - 9
    
END
    
    
IF   @@ERROR   <> 0
    
BEGIN
        
-- 操作失败,则事务回滚
         ROLLBACK   TRAN
        
-- 返回存储
         SET   @Result   =   - 1
        
PRINT   ' -1-Updated Error '
        
RETURN   - 1
    
END
    
    
-- 成功
     COMMIT   TRAN
    
SET   @Result   =   1
    
RETURN   1
END
转载请注明出处[ http://samlin.cnblogs.com/] 
作者赞赏
 


刚做的招标网: 八爪鱼招标网 请大家多意见
分类:  DataBase
标签:  存储过程工作流事务

本文转自Sam Lin博客博客园博客,原文链接:http://www.cnblogs.com/samlin/archive/2009/06/08/workflow-tansaction-proc.html,如需转载请自行联系原作者
目录
相关文章
|
7月前
|
存储
SQLServer存储过程中事务的创建
SQLServer存储过程中事务的创建
51 0
|
5月前
|
存储 XML Java
Spring中service层与存储过程的事务回滚
Spring中service层与存储过程的事务回滚
55 0
|
11月前
|
存储 SQL 关系型数据库
【MySQL速通篇003】MySQL视图,MySQL触发器,MySQL函数,MySQL存储过程(参数分类,存储过程的增删改查等),SQL的动态执行,支持事务的存储过程,pymysql 2
【MySQL速通篇003】MySQL视图,MySQL触发器,MySQL函数,MySQL存储过程(参数分类,存储过程的增删改查等),SQL的动态执行,支持事务的存储过程,pymysql 2
285 0
|
11月前
|
存储 SQL NoSQL
【MySQL速通篇003】MySQL视图,MySQL触发器,MySQL函数,MySQL存储过程(参数分类,存储过程的增删改查等),SQL的动态执行,支持事务的存储过程,pymysql 1
【MySQL速通篇003】MySQL视图,MySQL触发器,MySQL函数,MySQL存储过程(参数分类,存储过程的增删改查等),SQL的动态执行,支持事务的存储过程,pymysql 1
444 0
|
存储 SQL 缓存
mysql存储过程与事务
mysql存储过程与事务
646 0
mysql存储过程与事务
|
存储 Oracle 关系型数据库
【DB吐槽大会】第67期 - PG 存储过程和函数内对自治事务支持不完整
大家好,这里是DB吐槽大会,第67期 - PG 存储过程和函数内对自治事务支持不完整
|
SQL 存储 关系型数据库
mysql-视图、触发器、事务、存储过程、流程控制
目录 视图 触发器 事务 存储过程 流程控制 一、视图 视图是由查询结果构成的一张虚拟表,和真实的表一样,带有名称的列和行数据 强调:视图是永久存储的,但是视图存储的不是数据,只是一条sql语句 视图的特点: 视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系。
1475 0