在sql里面rairror有什么作用的啊?
RAISERROR是抛出SQL语句异常或错误的关键字,在存储过程里经常用到。
用法:
使用RAISERROR后需带三个参数,分别如下:
RAISERROR(参数一,参数二,参数三)
参数一:提示出错信息
参数二:错误的状态
参数三:错误的级别
例如:RAISERROR('过程执行出错,行【100】',16,1),16为状态,级别1,错误信息为:过程执行出错,行【100】。
sql中的 rairror什么意思啊?
RAISERROR
返回用户定义的错误信息并设系统标志,记录发生错误。通过使用 RAISERROR 语句,客户端可以从 sysmessages 表中检索条目,或者使用用户指定的严重度和状态信息动态地生成一条消息。这条消息在定义后就作为服务器错误信息返回给客户端。
语法
RAISERROR ( { msg_id | msg_str } { , verity , state }
[ , argument [ ,...n ] ] )
[ WITH option [ ,...n ] ]
参数
msg_id
存储于 sysmessages 表中的用户定义的错误信息。用户定义错误信息的错误号应大于 50,000。由特殊消息产生的错误是第 50,000 号。
msg_str
是一条特殊消息,其格式与 C 语言中使用的 PRINTF 格式样式相似。此错误信息最多可包含 400 个字符。如果该信息包含的字符超过 400 个,则只能显示前 397 个并将添加一个省略号以表示该信息已被截断。所有特定消息的标准消息 ID 是 14,000。
msg_str 支持下面的格式:
% [[flag] [width] [precision] [{h | l}]] type
可在 msg_str 中使用的参数包括:
flag
用于确定用户定义的错误信息的间距和对齐的代码。
可以查阅一下SQL SERVER的联机丛书(在安装了MSSQL的开始菜单里可以查到)
sql 怎么用rairror回滚数据
rairror 是进行错误提示的
begin tran
语句
if @@error<>0
rairror('语句未正常执行.请检查',16,1)
rollback tran //回滚操作.
el
commit tran
sql中“rairror(4008,16,10)”语句是什么意思?里面的数字是什么意思?
RAISERROR 语句2007-06-07 16:30说明
此语句用于发出错误信号和向客户端发送消息。
语法
RAISERROR error-number [ format-string ] [, arg-list ]
参数
error-number error-number 是大于 17000 的五位整数。错误号存储在全局变量 @@error 中。
format-string 如果未提供 format-string 或者其为空,则使用错误号在系统表中查找错误消息。Adaptive Server Enterpri 从 SYSMESSAGES 表中获取的消息范围为 17000-19999。在 Adaptive Server Anywhere 中,此表为空视图,因此这个范围内的错误消息应该提供格式字符串。编号为 20000 或更大的错误消息从 SYS.SYSUSERMESSAGES 表中获取。
在 Adaptive Server Anywhere 中,format-string 的长度最多可达 255 字节。
Adaptive Server Enterpri 中的 RAISERROR 语句支持的扩展值在 Adaptive Server Anywhere 中不受支持。
对于可选参数列表中的参数,格式字符串可以包含占位符。这些占位符的形式为 %nn!,其中 nn 是介于 1 到 20 之间的整数。
中间 RAISERROR 状态和代码信息在过程终止后会丢失。如果在返回时伴随 RAISERROR 发生了错误,则返回错误信息,而 RAISERROR 信息将丢失。应用程序可以通过在不同的执行点检查 @@error 全局变量,查询中间 RAISERROR 状态。
用法
RAISERROR 语句允许发出用户定义的错误并向客户端发送消息。
权限
无。
副作用
无。
另请参见
CREATE TRIGGER 语句 [T-SQL]
ON_TSQL_ERROR 选项 [compatibility]
CONTINUE_AFTER_RAISERROR 选项 [compatibility]
标准和兼容性
SQL/92 Transact-SQL 扩展。
SQL/99 Transact-SQL 扩展。
Syba 受 Adaptive Server Enterpri 支持。
示例
下面的语句引发错误 23000(该错误在用户定义的错误范围内)并向客户端发送消息。请注意在 error-number 和 format-string 参数之间有一个逗号。逗号后的第一项被解释为参数列表中的第一项。
RAISERROR 23000 'Invalid entry for this column: %1!', @val
下一个示例使用 RAISERROR 禁止连接。
create procedure DBA.login_check()
begin
// Allow a maximum of 3 concurrent connections
if( db_property('ConnCount') > 3 ) then
rairror 28000
'Ur %1! is not allowed to connect -- there are already %2! urs logged on',
current ur,
cast(db_property('ConnCount') as int)-1;
el
call sp_login_environment;
end if;
end
go
grant execute on DBA.login_check to PUBLIC
go
t option PUBLIC.Login_procedure='DBA.login_check'
go
SQL触发器RAISERROR问题
RAISERROR代码是不会中断下面代码执行的,加个return试试
create trigger AAAA on outstock
for inrt
as
begin
RAISERROR('不允许插入数据!',18,18)
return
end
sql 2005 Rairror的用法???
1、说明:创建数据库
CREATE DATABASE databa-name
2、说明:删除数据库
drop databa dbname
3、说明:备份sql rver
--- 创建 备份数据的 device
USE master
EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- 开始 备份
BACKUP DATABASE pubs TO testBack
4、说明:创建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根据已有的表创建新表:
A:create table tab_new like tab_old (使用旧表创建新表)
B:create table tab_new as lect col1,col2… from tab_old definition only
5、说明:删除新表drop table tabname
6、说明:增加一个列
Alter table tabname add column col type
注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
7、说明:添加主键: Alter table tabname add primary key(col)
说明:删除主键: Alter table tabname drop primary key(col)
8、说明:创建索引:create [unique] index idxname on tabname(col….)
删除索引:drop index idxname
注:索引是不可更改的,想更改必须删除重新建。
9、说明:创建视图:create view viewname as lect statement
删除视图:drop view viewname
10、说明:几个简单的基本的sql语句
选择:lect * from table1 where 范围
插入:inrt into table1(field1,field2) values(value1,value2)
删除:delete from table1 where 范围
更新:update table1 t field1=value1 where 范围
查找:lect * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!
排序:lect * from table1 order by field1,field2 [desc]
总数:lect count * as totalcount from table1
求和:lect sum(field1) as sumvalue from table1
平均:lect avg(field1) as avgvalue from table1
最大:lect max(field1) as maxvalue from table1
最小:lect min(field1) as minvalue from table1
11、说明:几个高级查询运算词
A: UNION 运算符
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
B: EXCEPT 运算符
EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
C: INTERSECT 运算符
INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
注:使用运算词的几个查询结果行必须是一致的。
12、说明:使用外连接
A、left outer join:
左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
SQL: lect a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
B:right outer join:
右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
C:full outer join:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
其次,大家来看一些不错的sql语句
1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
法一:lect * into b from a where 1 <>1
法二:lect top 0 * into b from a
2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)
inrt into b(a, b, c) lect d,e,f from b;
3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)
inrt into b(a, b, c) lect d,e,f from b in ‘具体数据库’ where 条件
例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..
4、说明:子查询(表名1:a 表名2:b)
lect a,b,c from a where a IN (lect d from b ) 或者: lect a,b,c from a where a IN (1,2,3)
5、说明:显示文章、提交人和最后回复时间
lect a.title,a.urname,b.adddate from table a,(lect max(adddate) adddate from table where table.title=a.title) b
6、说明:外连接查询(表名1:a 表名2:b)
lect a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
7、说明:在线视图查询(表名1:a )
lect * from (SELECT a,b,c FROM a) T where t.a > 1;
8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括
lect * from table1 where time between time1 and time2
lect a,b,c, from table1 where a not between 数值1 and 数值2
9、说明:in 的使用方法
lect * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)
10、说明:两张关联表,删除主表中已经在副表中没有的信息
delete from table1 where not exists ( lect * from table2 where table1.field1=table2.field1 )
11、说明:四表联查问题:
lect * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....
12、说明:日程安排提前五分钟提醒
SQL: lect * from 日程安排 where datediff('minute',f开始时间,getdate())>5
13、说明:一条sql 语句搞定数据库分页
lect top 10 b.* from (lect top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
14、说明:前10条记录
lect top 10 * form table1 where 范围
15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
lect a,b,c from tablename ta where a=(lect max(a) from tablename tb where tb.b=ta.b)
16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表
(lect a from tableA ) except (lect a from tableB) except (lect a from tableC)
17、说明:随机取出10条数据
lect top 10 * from tablename order by newid()
18、说明:随机选择记录
lect newid()
19、说明:删除重复记录
Delete from tablename where id not in (lect max(id) from tablename group by col1,col2,...)
20、说明:列出数据库里所有的表名
lect name from sysobjects where type='U'
21、说明:列出表里的所有的
lect name from syscolumns where id=object_id('TableName')
22、说明:列示type、vender、pcs字段,以type字段排列,ca可以方便地实现多重选择,类似lect 中的ca。
lect type,sum(ca vender when 'A' then pcs el 0 end),sum(ca vender when 'C' then pcs el 0 end),sum(ca vender when 'B' then pcs el 0 end) FROM tablename group by type
显示结果:
type vender pcs
电脑 A 1
电脑 A 1
光盘 B 2
光盘 A 2
手机 B 3
手机 C 3
23、说明:初始化表table1
TRUNCATE TABLE table1
24、说明:选择从10到15的记录
lect top 5 * from (lect top 15 * from table order by id asc) table_别名 order by id desc
另外,虚机团上产品团购,超级便宜