mysql raiserror_SQL Server自定义异常的使用raiserror
在使用SQL Server存储过程或者触发器时,通常会使用自定义异常来处理一些特殊逻辑。例如游标的销毁,事务的回滚。接下来将会详细的介绍SQL Server自定义异常的使用。
使用“raiserror”来抛出自定义异常。如下代码:在存储过程中,抛出自定义异常,然后在catch块中捕获自定义异常。
IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='my_sp_test' AND TYPE='P') BEGIN
DROP PROCEDURE my_sp_test;
END;
GO
create procedure my_sp_test @i int, @outstr varchar(100) out as
begin try
declare @j int;
if @i<10 begin
set @outstr = 'system exception.';
set @j = 10/0; -- 因为被除数为0,所以这里将会抛出一个系统的异常
end
else begin
set @j = @i;
set @outstr = 'customer exception';
-- 抛出自定义的异常,在最后的catch块中统一处理异常
RAISERROR (66666, -- Message id.
16, -- Severity,
1 -- State,
) ;
end;
end try
begin catch
if @@ERROR=66666 begin -- 通过@@ERROR的值来判断是否是自定义的异常
set @outstr = @outstr + '---------------- customer exception';
end;
return;
end catch;
go
如上代码,raiserror参数说明:
(1). Message id : 异常的唯一标识,且这个值会被赋值给SQLServer的系统变量@@Error。
自定义异常的Message Id建议使用50000以后的,因为50000以内的会被系统异常占用。
(2). Severity : 异常的级别。 可输入1—19的数值。1—10之间不会被catch捕获。19以后是非常严重的级别。
(3). State : 如果输入负值或大于255 的值会生成错误,产生错误则会中断数据库的连接
执行该存储过程,看看自定义异常是否成功捕获:
DECLARE @OUTSTR11 VARCHAR(100);
exec dbo.my_sp_test 12,@OUTSTR11 out
print @OUTSTR11;
mysql raiserror_SQL Server自定义异常的使用raiserror相关推荐
- mysql raiserror_sql server数据库中raiserror函数的用法
server数据库中raiserror的作用就和asp.NET中的throw new Exception一样,用于抛出一个异常或错误.这个错误可以被程序捕捉到. raiserror的常用格式如下: r ...
- mysql raiserror_sql server数据库中raiserror函数用法的详细介绍
sql server数据库中raiserror函数的用法 server数据库中raiserror的作用就和asp.NET中的throw new Exception一样,用于抛出一个异常或错误.这个错误 ...
- mysql raiserror_sql server RAISERROR用法介绍
raiserror 是由单词 raise error 组成 raise 增加; 提高; 提升 raiserror 的作用: raiserror 是用于抛出一个错误. 其语法如下: RAISERRO ...
- Starting MySQL....The server quit without updating PID file 处理方法
报错: Starting MySQL....The server quit without updating PID file ... 查看错误日志 情景1: 120217 15:09:57[ERRO ...
- mysql The server quit without updating PID file异常解决办法
安装好mysql后,用 /usr/local/mysql/bin/mysqld_safe & 去启动mysql,总是处于僵死状态,后来去suport_files 用mysql.server s ...
- 偶遇mysql(Percona Server)的一个新bug
bug的原因是在linux系统下,mysql的配置文件my.cnf的basedir不能使用软连接. 表象如下: #cat /usr/local/mysql/my.cnf | grep basedir ...
- centos mysql pid_centos7 mysql The server quit without updating PID file(错误解决)
1 问题 [root@localhost mysql]# /etc/rc.d/init.d/mysql status MySQL is not running, but lock file (/var ...
- oracle rds 运维服务_从运维的角度分析使用阿里云数据库RDS的必要性–你不应该在阿里云上使用自建的MySQL/SQL Server/Oracle/PostgreSQL数据库...
开宗明义,你不应该在阿里云上使用自建的MySQL or SQL Server数据库,对了,还有Oracle or PostgreSQL数据库. 云数据库 RDS(Relational Database ...
- MySQL启动异常Starting MySQL.The server quit without .
2019独角兽企业重金招聘Python工程师标准>>> MySQL启动异常 Starting MySQL..The server quit without updating PID ...
最新文章
- 基于linux的netfilter处理数据包的过程分析,基于Linux的Netfilter处理数据包的过程分析...
- oracle 判断如果有符合条件的记录则不插入_Oracle数据库AWR部分报告说明
- oracle 数据库运行模式
- 百度云cdn设置州五年制大专_图说云原生:让云原生转型变得像种白菜一样简单...
- 怎样从php转向java_Github标星10.8K!Java 实战博客项目分享
- a76比a73强多少_arm的a73和a72同上10nm,谁强?
- 在linux下搭建git环境,在linux下搭建git github开发环境
- 禁ping也能ping的工具: tcping
- CentOS防止黑客攻击Linux服务器实战演练
- NUC1445 Euclid's Game【博弈】
- linux-du命令详解
- Java——单例模式:饿汉、懒汉模式
- 实对称矩阵 二次型 合同 相似对角化
- 【20211106】【数据分析】hist 和 bar 的区别
- Swagger对自定义入参和出参(过滤器)的支持
- RabbitMQ(13)RabbitMQ高级特性:TTL
- 让我们一起打起FPGA工程师就业保卫战
- polygon java_JAVA Polygon 在配送区域超区校验的实践
- python unzip解压缩_Python压缩和解压缩文件(zip/unzip)
- 医药企业CRM市场浅谈
热门文章
- [转]计算机语言的种类总结
- 利用代码改变世界 #AzureDev
- jquery的ajax全局事件和AJAX 请求正在进行时显示“正在加载”
- python成长之路10——socketserver源码分析
- JNI 之 HelloWorld
- 数据库安装时的log路径
- Elasticsearch--入门-_put post方式添加数据---全文检索引擎ElasticSearch工作笔记005
- Rabbitmq工作笔记009---access to vhost ‘/‘ refused for user 权限问题
- 数据库工作笔记006---CentOS 初次登录mysql
- Linux学习笔记011---编译命令make的认识及使用