博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在存储过程中用事务
阅读量:5042 次
发布时间:2019-06-12

本文共 3163 字,大约阅读时间需要 10 分钟。

 

添加表,然后根据是否添加关系isRelation来添加关系表(放入事务中)

set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgoCREATE PROCEDURE [dbo].[AddModule](    @ModuleName nvarchar(50),    @ParentID int,    @LanguageID int,    @OrderNo int,    @BannerUrl varchar(150),    @IconUrl varchar(150),    @Url varchar(150),    @ModuleManageUrl varchar(150),    @InfoManageUrl varchar(150),    @IsVisible bit,    @IsEnabled bit,    @Remark nvarchar(200),    @moduleRelationId int,    @isRelation bit)ASBegin    declare @sql varchar(max)    declare @TempModuleID int    begin   tran      begin try            insert into Module (ModuleName,ParentID,LanguageID,OrderNo,BannerUrl,IconUrl,Url,ModuleManageUrl,InfoManageUrl,IsVisible,IsEnabled,Remark)            values(@ModuleName,@ParentID,@LanguageID,@OrderNo,@BannerUrl,@IconUrl,@Url,@ModuleManageUrl,@InfoManageUrl,@IsVisible,@IsEnabled,@Remark);            set @TempModuleID=@@identity            if @isRelation=1            insert into ModuleRelation(ModuleIDs)values(Cast(@TempModuleID as varchar)+','+Cast(@moduleRelationId as varchar))                        commit tran            set @sql='select '+Cast(@TempModuleID as varchar)+' as ModuleID'    end try    begin catch                        rollback tran            set @sql='select 0 as ModuleID'                end catch    execute (@sql)    END

更新表和关系表

set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgoCREATE PROCEDURE [dbo].[UpdateModule](    @ModuleName nvarchar(50),    @ParentID int,    @LanguageID int,    @OrderNo int,    @BannerUrl varchar(150),    @IconUrl varchar(150),    @Url varchar(150),    @ModuleManageUrl varchar(150),    @InfoManageUrl varchar(150),    @IsVisible bit,    @IsEnabled bit,    @Remark nvarchar(200),    @ModuleID int,    @moduleRelationId int,    @isRelation bit)ASBegin    declare @sql varchar(max)    declare @TempModuleRelationID int    begin   tran      begin try            --更新模块信息            update Module set ModuleName=@ModuleName,ParentID=@ParentID,LanguageID=@LanguageID,OrderNo=@OrderNo,                BannerUrl=@BannerUrl,IconUrl=@IconUrl,Url=@Url,ModuleManageUrl=@ModuleManageUrl,InfoManageUrl=@InfoManageUrl,IsVisible=@IsVisible,IsEnabled=@IsEnabled,Remark=@Remark                where moduleId=@moduleId            --是否修改关系            if @isRelation=1            begin                --判断该模块是否已存在关系                select @TempModuleRelationID=ModuleRelationID from ModuleRelation where charindex(','+Cast(@ModuleID as varchar)+',',','+ModuleIDs+',')!=0                            if(@TempModuleRelationID is null)                                        insert into ModuleRelation(ModuleIDs)values(Cast(@ModuleID as varchar)+','+Cast(@moduleRelationId as varchar))                else                    update ModuleRelation set ModuleIDs=(Cast(@ModuleID as varchar)+','+Cast(@moduleRelationId as varchar)) where ModuleRelationID=@TempModuleRelationID                        end            commit tran            set @sql='select 1 as result'    end try    begin catch                        rollback tran            set @sql='select 0 as result'            end catch    execute (@sql)END

转载于:https://www.cnblogs.com/yzj1212/archive/2012/07/02/2573051.html

你可能感兴趣的文章
django创建项目流程
查看>>
UIActionSheet 修改字体颜色
查看>>
Vue 框架-01- 入门篇 图文教程
查看>>
Spring注解之@Lazy注解,源码分析和总结
查看>>
多变量微积分笔记24——空间线积分
查看>>
Magento CE使用Redis的配置过程
查看>>
poi操作oracle数据库导出excel文件
查看>>
(转)Intent的基本使用方法总结
查看>>
Mac 下的Chrome 按什么快捷键调出页面调试工具
查看>>
Windows Phone开发(24):启动器与选择器之发送短信
查看>>
JS截取字符串常用方法
查看>>
Google非官方的Text To Speech和Speech Recognition的API
查看>>
stdext - A C++ STL Extensions Libary
查看>>
Django 内建 中间件组件
查看>>
bootstrap-Table服务端分页,获取到的数据怎么再页面的表格里显示
查看>>
进程间通信系列 之 socket套接字及其实例
查看>>
天气预报插件
查看>>
Unity 游戏框架搭建 (十三) 无需继承的单例的模板
查看>>
模块与包
查看>>
mysql忘记root密码
查看>>