先看一个错误例子:
declare @a varchar(50)
declare @b int
set @a='aa'
set @b= cast(@a as int)
select @b
执行后,提示:
服务器: 消息 245,级别 16,状态 1,行 4
将 varchar 值 'aa' 转换为数据类型为 int 的列时发生语法错误。我想要他出错的时候,去做其他事,而不是终止了,怎么修改?
比如说,转换‘aa'出错了,就set @b=0.
declare @a varchar(50)
declare @b int
set @a='aa'
set @b= cast(@a as int)
select @b
执行后,提示:
服务器: 消息 245,级别 16,状态 1,行 4
将 varchar 值 'aa' 转换为数据类型为 int 的列时发生语法错误。我想要他出错的时候,去做其他事,而不是终止了,怎么修改?
比如说,转换‘aa'出错了,就set @b=0.
declare @b int
declare @error int
set @a='aa'
set @b= cast(@a as int)
set @error=@error+@@error
select @b
if @error<>0
begin
……
end
貌似不能.
declare @a varchar(50)
declare @b int
set @a='aa'
begin try
set @b= cast(@a as int)
end try
begin catch
if @@error <>0
print 'error'
else
print '1111'
end catch/*
error
*/
不行,还是返回:服务器: 消息 245,级别 16,状态 1,行 5
将 varchar 值 'aa' 转换为数据类型为 int 的列时发生语法错误。