sql中的 raiserror什么意思啊?
3个回答
展开全部
RAISERROR
返回用户定义的错误信息并设系统标志,记录发生错误。通过使用 RAISERROR 语句,客户端可以从 sysmessages 表中检索条目,或者使用用户指定的严重度和状态信息动态地生成一条消息。这条消息在定义后就作为服务器错误信息返回给客户端。
语法
RAISERROR ( { msg_id | msg_str } { , severity , 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的开始菜单里可以查到)
返回用户定义的错误信息并设系统标志,记录发生错误。通过使用 RAISERROR 语句,客户端可以从 sysmessages 表中检索条目,或者使用用户指定的严重度和状态信息动态地生成一条消息。这条消息在定义后就作为服务器错误信息返回给客户端。
语法
RAISERROR ( { msg_id | msg_str } { , severity , 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的开始菜单里可以查到)
展开全部
自定义一个错误类型
例如:
你定义一个存储过程如下,这个存储过程没什么意义,只是为了用raiserror
create procedure check_mark
@pass_mark int -- 及格线
as
if @pass_mark not between 0 and 100
begin
raiserror "请输入正确的及格线",16,1 --这就自定义了一个错误类型。当你传入的参数@pass_mark不在0到100之间时就会报错
return --停止执行一下的T-SQL
end
go
例如:
你定义一个存储过程如下,这个存储过程没什么意义,只是为了用raiserror
create procedure check_mark
@pass_mark int -- 及格线
as
if @pass_mark not between 0 and 100
begin
raiserror "请输入正确的及格线",16,1 --这就自定义了一个错误类型。当你传入的参数@pass_mark不在0到100之间时就会报错
return --停止执行一下的T-SQL
end
go
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
enterprise
从
sysmessages
表中获取的消息范围为
17000-19999。在
adaptive
server
anywhere
中,此表为空视图,因此这个范围内的错误消息应该提供格式字符串。编号为
20000
或更大的错误消息从
sys.sysusermessages
表中获取。
在
adaptive
server
anywhere
中,format-string
的长度最多可达
255
字节。
adaptive
server
enterprise
中的
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
扩展。
sybase
受
adaptive
server
enterprise
支持。
示例
下面的语句引发错误
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
raiserror
28000
'user
%1!
is
not
allowed
to
connect
--
there
are
already
%2!
users
logged
on',
current
user,
cast(db_property('conncount')
as
int)-1;
else
call
sp_login_environment;
end
if;
end
go
grant
execute
on
dba.login_check
to
public
go
set
option
public.login_procedure='dba.login_check'
go
语句2007-06-07
16:30说明
此语句用于发出错误信号和向客户端发送消息。
语法
raiserror
error-number
[
format-string
]
[,
arg-list
]
参数
error-number
error-number
是大于
17000
的五位整数。错误号存储在全局变量
@@error
中。
format-string
如果未提供
format-string
或者其为空,则使用错误号在系统表中查找错误消息。adaptive
server
enterprise
从
sysmessages
表中获取的消息范围为
17000-19999。在
adaptive
server
anywhere
中,此表为空视图,因此这个范围内的错误消息应该提供格式字符串。编号为
20000
或更大的错误消息从
sys.sysusermessages
表中获取。
在
adaptive
server
anywhere
中,format-string
的长度最多可达
255
字节。
adaptive
server
enterprise
中的
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
扩展。
sybase
受
adaptive
server
enterprise
支持。
示例
下面的语句引发错误
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
raiserror
28000
'user
%1!
is
not
allowed
to
connect
--
there
are
already
%2!
users
logged
on',
current
user,
cast(db_property('conncount')
as
int)-1;
else
call
sp_login_environment;
end
if;
end
go
grant
execute
on
dba.login_check
to
public
go
set
option
public.login_procedure='dba.login_check'
go
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询