sql server中raiserror的用法(动态参数传值)
1、raiserrror定义: 返回用户定义的错误信息并设系统标志,记录发生错误。通过使用 RAISERROR 语句,客户端可以从 sysmessages 表中检索条目,
或者使用用户指定的严重度和状态信息动态地生成一条消息。这条消息在定义后就作为服务器错误信息返回给客户端。
2、raiserrror语法
RAISERROR ( { msg_id | msg_str } { , severity , state }
3、raiserrror用法
--不带动态参数返回错误信息
raiserror('参数有误,入库数量不能为0',,) ----带动态参数返回错误信息
raiserror('参数%s[%d]有误,%s',,,'@Num2',@Num2,@msg)
4、简单例子
1)创建一个加减乘除算法的存储过程
/***********************
**功能:进行加减乘除计算
**参数:@Num1(参数1)、@Num2(参数2)
@opeType(计算类型)、@num3(返回结果)
***************************/
create procedure pro_CalculateNum
@Num1 int,
@Num2 int,
@opeType int,
@num3 decimal output
as
begin
declare @msg varchar(50)
--进行加法运算
if @opeType=1
begin
set @num3 = @Num1+@Num2;
--打印结果
print @num3;
end
--进行减法运算
if @opeType=2
begin
set @num3 = @Num1-@Num2;
--打印结果
print @num3;
end
--进行乘法运算
if @opeType=3
begin
set @num3 = @Num1*@Num2;
--打印结果
print @num3;
end
--进行除法运算
if @opeType=4
begin
if @Num2=0
begin
set @msg='进行除法,遇到以零作除数错误';
--抛出自定义错误信息
raiserror('参数%s[%d]有误,%s',16,1,'@Num2',@Num2,@msg)
end
else
begin
set @num3 = @Num1/@Num2;
--打印结果
print @num3;
end
end
--进行取模%运算
if @opeType=5
begin
if @Num2=0
begin
set @msg='进行取模,遇到以零作除数错误';
--抛出自定义错误信息
raiserror('参数%s[%d]有误,%s',16,1,'@Num2',@Num2,@msg)
end
else
begin
set @num3 = @Num1%@Num2;
--打印结果
print @num3;
end
end
end;
2)进行存储过程调用(除数为0时,我们把错误重新自定义了)
--调用存储过程(除数为0)--
declare @result decimal
exec pro_CalculateNum 12,0,4,@result output
调用结果

3)进行存储过程调用(除数不为0)
--调用存储过程(除数不为0)--
declare @result decimal
exec pro_CalculateNum 12,3,4,@result output
调用结果

5、raiserrror符号

详细介绍,请参考网址:
https://www.bbsmax.com/A/A2dmVpmqze/
sql server中raiserror的用法(动态参数传值)的更多相关文章
- SQL Server 中 RAISERROR 的用法
From : http://www.cnblogs.com/xugang/archive/2011/04/09/2010216.html raiserror 是由单词 raise error 组 ...
- SQL Server 中 RAISERROR 的用法(转)
在存储过程中进程会处理一些逻辑性的错误,如:将RMB转换为USD时,没有查询到想要的汇率 这个时候最好在存储过程中抛个异常,方便自己查找错误信息... 其语法如下: RAISERROR ( { msg ...
- SQL SERVER 中 GO 的用法2
具体不废话了,请看下文详解. 1 2 3 4 5 6 7 8 9 10 use db_CSharp go select *, 备注=case when Grade>=90 then '成绩 ...
- SQL SERVER 中PatIndex的用法个人理解
一般用法:PatIndex('%AAA%',‘BBBBBBBB’) 上句的意思是查找AAA在BBBBBBBB中的位置,从1开始计算,如果没有的话则返回0 其中%AAA%的用法和 SQL语句中like的 ...
- SQL Server中@@ROWCOUNT的用法
SQL Server中@@ROWCOUNT返回受上一语句影响的行数,返回值类型为 int 整型. 如果行数大于 20 亿,则需要使用 ROWCOUNT_BIG. @@ROWCOUNT和@@ERROR变 ...
- 【转】sql server2005中raiserror的用法
raiserror 是由单词 raise error 组成 raise 增加; 提高; 提升 raiserror 的作用: raiserror 是用于抛出一个错误.[ 以下资料来源于sql ...
- sql server 中raiserror的使用
server数据库中raiserror的作用就和asp.net中的throw new Exception一样,用于抛出一个异常或错误.这个错误可以被程序捕捉到. raiserror('错误的描述',错 ...
- SQL Server 中 GO 的用法(转)
本科里学了那么多年SQL Server一直看到书上各种SQL语句中间夹杂着那么几个看似毫无意义的GO,看着就让人莫名,问老师,老师一般只会告诉你,不要理他,这个东西没用的.但是个性纠结并且有轻微强迫症 ...
- SQL SERVER 中 GO 的用法
用信号通知 Microsoft® SQL Server™ 实用工具一批 Transact-SQL 语句的结束.GO 不是 Transact-SQL 语句:而是可为 osql 和 isql 实用工具及 ...
随机推荐
- Java 虚拟机 - GC 垃圾回收机制分析
Java 垃圾回收(Garbage Collection,GC) Java支持内存动态分配.垃圾自动回收,而 C++ 不支持.我想这可能也是 为什么 Java 脱胎于 C++ 的一个原因吧. GC 的 ...
- 设计模式之JDK动态代理源码分析
这里查看JDK1.8.0_65的源码,通过debug学习JDK动态代理的实现原理 大概流程 1.为接口创建代理类的字节码文件 2.使用ClassLoader将字节码文件加载到JVM 3.创建代理类实例 ...
- MongoDB(NoSQL) 非关系型数据库
目录 简单了解 mongoDB 简单使用mongoDB 简单了解 mongoDB # NoSQL 泛指非关系型的数据库 NoSQL(NoSQL = Not Only SQL ),意即"不仅仅 ...
- MySQL Table--MySQL外键
在之前的MySQL运维中,要求禁用触发器/存储过程/外键等一些数据库常见功能,因此对MySQL外键也相对比较陌生,今天特地探究下. 现有表TB001和TB002各包含6291456行数据,创建脚本如下 ...
- Oracle数据表字段小写转大写
BEGIN FOR c IN ( SELECT COLUMN_NAME cn FROM all_tab_columns WHERE table_name = '表名' ) loop BEGIN exe ...
- (二)Kubernetes kubeadm部署k8s集群
kubeadm介绍 kubeadm是Kubernetes项目自带的及集群构建工具,负责执行构建一个最小化的可用集群以及将其启动等的必要基本步骤,kubeadm是Kubernetes集群全生命周期的管理 ...
- Python时间模块。
python中时间的表示方式 unix时间戳,字符串时间,格式化时间 时间模块有,time,datetime,calendar #time模块 import time #获取本地时间戳,返回浮点数 p ...
- IDEA 中 Git Commit message 编写
IDEA安装插件 Git Commit Template 1. HeaderHeader的部分只有一行,包括三个字段: type(必需), scope(可选), subject(必需) 对应到idea ...
- django-支付宝支付
安装python-alipay-sdk pip install python-alipay-sdk --upgrade 配置 视图函数orders/views.py # 订单支付 # /order/p ...
- es6 函数解构的用途
es6的变量解构赋值很方便,那具体有哪些用途呢? 1.变换变量的值 let n = 10; let m = 20; [n, m] = [m, n] 这样n , m 的值 会互换, 即:n = 20, ...