Transact-SQL 常用函数 分类: SQL Server 2015-02-03 09:47 284人阅读 评论(0) 收藏
2015-02-03 09:47
477 查看
(1)DECLARE 两种用法:
1>:
DECLARE @usid VARCHAR(50),@usna NVARCHAR(100),@grna NVARCHAR(100);
2>:
DECLARE @usid VARCHAR(50)
DECLARE @usna NVARCHAR(100)
DECLARE @grna NVARCHAR(100)
(2)select 1 from mytable
select 1 from mytable;(一般是作条件用的)
select anycol(目的表集合中的任意一行) from mytable;
select * from mytable 作用上是没有差别的,都是查看是否有记录。
select 1 from 中的1是一常量,查到的所有行的值都是它,但从效率上来说,1>anycol>*,
因为不用查字典表。
(3)@@ERROR
返回值类型是:integer
如果前一个 Transact-SQL 语句执行没有错误,则返回 0。
如果前一个语句遇到错误,则返回错误号。
由于 @@ERROR 在每一条语句执行后被清除并且重置,因此应在语句验证后立即查看它,或将其保存到一个局部变量中以备以后查看。
(4)@@ROWCOUNT
返回值类型是:int
@@ROWCOUNT 值设置为受查询影响或由查询读取的行数。例:
select 1 from mytable
if @@rowcount>0
....
(5)SET NOCOUNT
表示受 Transact-SQL 语句影响的行数;
SET NOCOUNT ON; 不返回计数。
SET NOCOUNT OFF; 返回计数。
如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。
(6)RAISERROR
RAISERROR命令用于在SQL Server系统返回错误信息时同时返回用户指定的信息。
语法:
RAISERROR ( { msg_id | msg_str } { , severity , state }
[ , argument [ ,...n ] ] )
[ WITH option [ ,...n ] ]
参数说明:
msg_id:存储于sysmessages表中的用户定义的错误信息。用户定义错误信息的错误号应大于50000。由特殊消息产生的错误是第50000号。
msg_str:是一条特殊消息,其格式与C语言中使用的PRINTF格式样式相似。此错误信息最多可包含400个字符。如果该信息包含的字符超过400个,则只能显示前397个并将添加一个省略号以表示该信息已被截断。所有特定消息的标准消息ID是14000。msg_str支持的格式有% [[flag] [width] [precision] [{h | l}]] type。
severity:用户定义的与消息关联的严重级别。用户可以使用从0~18之间的严重级别。19~25之间的严重级别只能由sysadmin固定服务器角色成员使用。若要使用19~25之间的严重级别,必须将WITH option设置WTHLOG。
state :从1~127的任意整数,表示有关错误调用状态的信息。state的值默认为1。
argument:用于取代在msg_str中定义的变量或取代对应于msg_id的消息的参数。可以有0或更多的替代参数;然而,替代参数的总数不能超过20个。每个替代参数可以是局部变量或这些任意数据类型,如int1、int2、int4、char、varchar、binary或varbinary。不支持其他数据类型。
WITH option:错误的自定义选项。
就是说,你的这个参数 '系统限制您最低只能打九折' 是报错消息,参数16是严重级别,自定义的严重级别最高是18,19-25的严重级别是非常严重的,不般不会出现。参数1是状态,和参数5一样都没什么用的。
主要的就是第一个参数有用,能一眼看出报的是什么错误信息,第二个参数也有一点用,但是用处不大。
第一种:
RAISERROR('更新失败!',16,-1)
第二种用法:
BEGIN
RAISERROR(N'%s 的库存不足,目前只有 %d 个,无法满足出库 %d 个的需求!', 16, 1, '内存条', 15, 20);
END
消息 50000,级别 16,状态 1,服务器 TEST_PC\SQLEXPRESS,第 2 行内存条 的库存不足,目前只有 15 个,无法满足出库 20 个的需求!
BEGIN
SELECT @usna=usna FROM usin WHERE usid=@usid;
SELECT @grna=grna FROM grin WHERE grid=@grid;
RAISERROR('岗位[%s]中已存在用户[%s]',16,-1,@grna,@usna);
RETURN -1
END
1>:
DECLARE @usid VARCHAR(50),@usna NVARCHAR(100),@grna NVARCHAR(100);
2>:
DECLARE @usid VARCHAR(50)
DECLARE @usna NVARCHAR(100)
DECLARE @grna NVARCHAR(100)
(2)select 1 from mytable
select 1 from mytable;(一般是作条件用的)
select anycol(目的表集合中的任意一行) from mytable;
select * from mytable 作用上是没有差别的,都是查看是否有记录。
select 1 from 中的1是一常量,查到的所有行的值都是它,但从效率上来说,1>anycol>*,
因为不用查字典表。
(3)@@ERROR
返回值类型是:integer
如果前一个 Transact-SQL 语句执行没有错误,则返回 0。
如果前一个语句遇到错误,则返回错误号。
由于 @@ERROR 在每一条语句执行后被清除并且重置,因此应在语句验证后立即查看它,或将其保存到一个局部变量中以备以后查看。
(4)@@ROWCOUNT
返回值类型是:int
@@ROWCOUNT 值设置为受查询影响或由查询读取的行数。例:
select 1 from mytable
if @@rowcount>0
....
(5)SET NOCOUNT
表示受 Transact-SQL 语句影响的行数;
SET NOCOUNT ON; 不返回计数。
SET NOCOUNT OFF; 返回计数。
如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。
(6)RAISERROR
RAISERROR命令用于在SQL Server系统返回错误信息时同时返回用户指定的信息。
语法:
RAISERROR ( { msg_id | msg_str } { , severity , state }
[ , argument [ ,...n ] ] )
[ WITH option [ ,...n ] ]
参数说明:
msg_id:存储于sysmessages表中的用户定义的错误信息。用户定义错误信息的错误号应大于50000。由特殊消息产生的错误是第50000号。
msg_str:是一条特殊消息,其格式与C语言中使用的PRINTF格式样式相似。此错误信息最多可包含400个字符。如果该信息包含的字符超过400个,则只能显示前397个并将添加一个省略号以表示该信息已被截断。所有特定消息的标准消息ID是14000。msg_str支持的格式有% [[flag] [width] [precision] [{h | l}]] type。
severity:用户定义的与消息关联的严重级别。用户可以使用从0~18之间的严重级别。19~25之间的严重级别只能由sysadmin固定服务器角色成员使用。若要使用19~25之间的严重级别,必须将WITH option设置WTHLOG。
state :从1~127的任意整数,表示有关错误调用状态的信息。state的值默认为1。
argument:用于取代在msg_str中定义的变量或取代对应于msg_id的消息的参数。可以有0或更多的替代参数;然而,替代参数的总数不能超过20个。每个替代参数可以是局部变量或这些任意数据类型,如int1、int2、int4、char、varchar、binary或varbinary。不支持其他数据类型。
WITH option:错误的自定义选项。
就是说,你的这个参数 '系统限制您最低只能打九折' 是报错消息,参数16是严重级别,自定义的严重级别最高是18,19-25的严重级别是非常严重的,不般不会出现。参数1是状态,和参数5一样都没什么用的。
主要的就是第一个参数有用,能一眼看出报的是什么错误信息,第二个参数也有一点用,但是用处不大。
第一种:
RAISERROR('更新失败!',16,-1)
第二种用法:
BEGIN
RAISERROR(N'%s 的库存不足,目前只有 %d 个,无法满足出库 %d 个的需求!', 16, 1, '内存条', 15, 20);
END
消息 50000,级别 16,状态 1,服务器 TEST_PC\SQLEXPRESS,第 2 行内存条 的库存不足,目前只有 15 个,无法满足出库 20 个的需求!
BEGIN
SELECT @usna=usna FROM usin WHERE usid=@usid;
SELECT @grna=grna FROM grin WHERE grid=@grid;
RAISERROR('岗位[%s]中已存在用户[%s]',16,-1,@grna,@usna);
RETURN -1
END
相关文章推荐
- MS SQL与Oracle常用函数对比 分类: 数据库 2009-11-05 23:41 259人阅读 评论(0) 收藏
- SQL 计算两个时间之差 分类: SQL Server 2014-07-04 10:57 119人阅读 评论(0) 收藏
- sql 视图 按where条件多个字段取一个 分类: SQL Server 2014-12-01 14:09 308人阅读 评论(0) 收藏
- SQL 存储过程 分页 分类: SQL Server 2014-05-16 15:11 449人阅读 评论(0) 收藏
- Python修炼--常用字符串、数学函数 分类: python基础学习 2013-06-16 13:23 205人阅读 评论(0) 收藏
- python常用函数总结 分类: python基础学习 2014-02-07 14:12 260人阅读 评论(0) 收藏
- Linux系统常用目录操作函数 分类: B3_LINUX 2013-02-18 16:44 486人阅读 评论(0) 收藏
- SQL 存储过程 通过多个ID更新数据 分类: SQL Server 2014-12-08 16:08 299人阅读 评论(0) 收藏
- SQL ID自增列从1开始重新排序 分类: SQL Server 2014-05-19 14:46 652人阅读 评论(0) 收藏
- MS SQL数据批量备份还原(适用于MS SQL 2005+) 分类: SQL Server 数据库 2015-03-10 14:32 103人阅读 评论(0) 收藏
- SQL 按月统计(两种方式) 分类: SQL Server 2014-08-04 15:36 154人阅读 评论(0) 收藏
- MS SQL数据批量备份还原(适用于MS SQL 2005+) 分类: SQL Server 数据库 2015-03-10 14:32 104人阅读 评论(0) 收藏
- 常用数据库 JDBC URL 格式 分类: Java 2011-01-19 14:55 21582人阅读 评论(1) 收藏 举报 jdbcurl数据库teradatasqlservermicroso
- MS SQLServer 批量附加数据库 分类: SQL Server 数据库 2015-07-13 11:12 30人阅读 评论(0) 收藏
- 文件复制函数的效率比较 分类: H_HISTORY 2013-02-17 21:20 845人阅读 评论(1) 收藏
- Linux常用软件 分类: arm-linux-Ubuntu 2013-07-22 16:28 301人阅读 评论(0) 收藏
- linux 之 snprintf函数用法 分类: arm-linux-Ubuntu 2013-07-30 09:36 1009人阅读 评论(0) 收藏
- C#实现函数默认值和C#4.0实现默认值 分类: C# 2012-05-14 22:56 4103人阅读 评论(0) 收藏
- sqlplus环境配置(login.sql) 分类: H2_ORACLE 2013-05-17 09:24 1382人阅读 评论(0) 收藏
- 常用u-boot命令详解(全) 2 分类: arm-linux-Ubuntu 2013-07-22 16:28 309人阅读 评论(0) 收藏