sqlserver中创建包含事务的存储过程
1 ALTER proc [dbo].[Proc_InsertStudent]2 @stuName nvarchar(50),@stuClassId int,@stuAge int3 as4 begin5 set nocount on --on表示不返回计数6 set xact_abort on --当执行事务时,如果出错,会将transcation设置为uncommittable状态7 8 begin try 9 declare @stuCountByName int; 10 select @stuCountByName=count(*) from Students where Name=@stuName; 11 12 if(isnull(@stuName,'')='') 13 begin 14 print('名字不能为空'); 15 return; 16 end 17 18 if(@stuCountByName>0) 19 begin 20 print('名字重复'); 21 return 22 end 23 24 begin tran --开启事务 25 insert into Students(Name,ClassId,Age) values(@stuName,@stuClassId,@stuAge) 26 commit tran --提交事务 27 28 end try 29 30 begin catch 31 if xact_state()=-1 32 rollback tran; --回滚事务 33 select ERROR_NUMBER() as ErrorNumber; 34 select ERROR_MESSAGE() as ErrorMsg; 35 end catch 36 set xact_abort off; 37 end 其中Students表:
1 CREATE TABLE [dbo].[Students]( 2 [ID] [int] IDENTITY(1,1) NOT NULL primary key, 3 [Name] [nvarchar](50) NOT NULL, 4 [ClassId] [int] NOT NULL, 5 [Age] [int] NOT NULL, 6 [CreateTime] [datetime] NOT NULL 7 );
1 ALTER proc [dbo].[Proc_InsertStudent]2 @stuName nvarchar(50),@stuClassId int,@stuAge int3 as4 begin5 set nocount on --on表示不返回计数6 set xact_abort on --当执行事务时,如果出错,会将transcation设置为uncommittable状态7 8 begin try 9 declare @stuCountByName int; 10 select @stuCountByName=count(*) from Students where Name=@stuName; 11 12 if(isnull(@stuName,'')='') 13 begin 14 print('名字不能为空'); 15 return; 16 end 17 18 if(@stuCountByName>0) 19 begin 20 print('名字重复'); 21 return 22 end 23 24 begin tran --开启事务 25 insert into Students(Name,ClassId,Age) values(@stuName,@stuClassId,@stuAge) 26 commit tran --提交事务 27 28 end try 29 30 begin catch 31 if xact_state()=-1 32 rollback tran; --回滚事务 33 select ERROR_NUMBER() as ErrorNumber; 34 select ERROR_MESSAGE() as ErrorMsg; 35 end catch 36 set xact_abort off; 37 end
转载于:https://www.cnblogs.com/zxtceq/p/5956813.html
sqlserver中创建包含事务的存储过程相关推荐
- 没有发布服务器的 rpc 安全信息,或该信息无效,SQLServer之创建分布式事务
分布式事务创建注意事项 指定一个由 Transact-SQL 分布式事务处理协调器 (MS DTC) 管理的 Microsoft 分布式事务的起点. 执行 BEGIN DISTRIBUTED TRAN ...
- SQLServer之创建分布式事务
分布式事务创建注意事项 指定一个由 Transact-SQL 分布式事务处理协调器 (MS DTC) 管理的 Microsoft 分布式事务的起点. 执行 BEGIN DISTRIBUTED TRAN ...
- sqlserver中常用的几个存储过程
sqlserver中的存储过程,何为存储过程呢? 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要 ...
- wpf中内容包含在border中_Excel中创建包含注释的数学公式
Step1. Alt+F11打开VBE界面,insert-->module,打开自定义公式编辑面板; Step2. 我打算在一堆的数字和运算符中,用[]来标识我的注释内容.利用正则表达式,将[] ...
- sqlserver中创建链接服务器图解教程
1.展开服务器对象-->链接服务器-->右击"新建链接服务器" 注意:必须以数据库管理员身份登录(通常也就是sa帐号)后,才可以创建"链接服务器" ...
- java 创建存储过程_如何在pl/sql中创建及调用JAVA存储过程 | 学步园
1.创建一个java存储过程helloworld create or replace and compile java source named helloworld as public class ...
- 在sqlserver中创建表值函数
1.创建表值函数SplitStr(用逗号分割字符串) ALTER FUNCTION [dbo].[SplitStr] (@RowData nvarchar(4000), @SplitOn nvarch ...
- 如何在Sqlserver 中创建非dbo 的表
首先创建一个用户 test 其次创建一个Schema :abc 例子 CREATE SCHEMA [abc] AUTHORIZATION [test] GO 创建好这个以后你想使用这个架构建表必须先拥 ...
- 去掉SqlServer中字段包含的回车、换行、回车换行符
-- 制表符 CHAR(9) -- 换行符 CHAR(10) -- 回车 CHAR(13) 注意:特殊字符在Sql Server Management Studio查询中显示为空格,但实际不是空格.在 ...
最新文章
- opencv_python使用cv2.imread()读取中文路径,cv2.imwrite()把图片写入中文路径。
- 一毕业年薪 201 万!目前全球仅四人,华为最高档“天才少年”这样说
- 键盘输入_键盘输入技巧
- on a null object reference 问题的解决办法
- 在java中必须要有main吗_在一个Java应用程序中main方法必须被说明为_____。
- autocad.net中ResultBuffer相关的常量值
- 计算机科学学院参加些什么比赛,【安全月进行时】计算机科学学院成功举办2019年实验室安全知识竞赛活动...
- 某大型银行深化系统之十四:技术架构
- linux系统如何启用安全内核,安全 - Linux 内核引导选项简介
- caffe-windows画loss与accuracy曲线
- Asp.Net中的三种分页方式总结
- rtx2060什么水平_《赛博朋克2077》持续火热 什么样的笔记本才能畅玩这款游戏
- Java web 项目读取src或者tomcat下class文件夹下的xml文件或者properties文件
- 微信.gif表情包保存到本地
- CSS-DIV页面布局
- 医药行业的销售数据如何分析?
- 计算机软件编程英语词汇集锦一
- HTML5基础基础练习题
- C C++实现网络验证和本地验证
- 如何在网易云音乐上正常听周杰伦的歌曲
热门文章
- 重磅汇总!2015-2019学硕国家线走势情况!
- 超硬核直播课 | 自主旋翼无人机主流算法、视觉SLAM基础
- windows下使用word2vec训练维基百科中文语料全攻略!(三
- 零基础入门深度学习 | 第一章:感知器
- 你知道应聘上一份机器学习的工作需要哪些条件吗?
- 将之前写完的猜数字游戏改为通过javabean_42个宝宝益智游戏良心整理!让宝宝快人一步更聪明...
- 如何用vbs编写一个游戏_如何编写一个 SkyWalking 插件
- 信安教程第二版-第6章认证技术原理与应用
- 远程桌面连接服务器,提示身份验证错误,要求的函数不受支持,但又找不到加密Oracle修正
- 如何订阅MQTT服务器历史消息,MQTT协议之消息订阅