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 实用工具及 ...
随机推荐
- 干货分享 | 3个开发IoT项目的开源物联网平台
物联网(IoT)是帮助人工智能(AI)以更好的方式控制和理解事物的未来技术. 艾艺收集了一些最有名的物联网平台,帮助您以受控方式开发物联网项目.物联网平台是帮助设置和管理互联网连接设备的组件套件. 一 ...
- 推荐一些github上的免费好书
本文转载自公众号:跟着小一写bug. 熬夜等于慢性自杀,那熬夜和喜欢的人说话,算不算是慢性殉情? 晚上好 小一来啦 有木有想哀家 其实今晚小一有个拳击课 可是 由于项目明天要演示 调一 ...
- .Net Core 2.2 发布IIS遇到的那些坑
这两天在研究.Net Core 发布iis总结一下. 我主要是参照官方文档: https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/ ...
- Ansible--Ansible之Roles
Ansible之Roles Roles介绍 ansible自1.2版本引入的新特性,用于层次性.结构化地组织playbook.roles能够根据层次型结构自动装载变量文件.tasks以及handler ...
- 《TensorFlow2深度学习》学习笔记(一)Tensorflow基础
本系列笔记记录了学习TensorFlow2的过程,主要依据 https://github.com/dragen1860/Deep-Learning-with-TensorFlow-book 进行学习 ...
- httprunner学习4-variables变量声明与引用
前言 在 HttpRunner 中,支持变量声明(variables)和引用($var)的机制.在 config 和 test 中均可以通过 variables 关键字定义变量,然后在测试步骤中可以通 ...
- URI与URL详解
URL 与 URI 很多人会混淆这两个名词. URL:(Uniform/Universal Resource Locator 的缩写,统一资源定位符). URI:(Uniform Resource I ...
- discuz x3.3后台admin.php防止直接恶意访问
功能说明:admin.php是discuz默认的后台地址,正常情况下可以直接访问,为了防止某些恶意访问的情况,可以修改以下内容进行安全性能提升. 适用版本:Discuz!x1-x3.3 具体实施方案: ...
- awk编程的基本用法
awk也是用来处理文本的,awk语言可以从文件或字符串中基于指定规则浏览和抽取信息,可以实现数据查找.抽取文件中的数据.创建管道流命令等功能. awk模式匹配 第一种方法打印空白行将空白行打印出来,并 ...
- 阿里巴巴Java开发手册(格式规约篇)——查自己的漏-补自己的缺
(三) 格式规约 1. [强制]大括号的使用约定.如果是大括号内为空,则简洁地写成{}即可,不需要换行:如果是非空代码块则: 1) 左大括号前不换行.行. 2) 左大括号后换行. 3) 右大括号前换行 ...