SQL中错误处理的问题,求助中》》》
来源:百度知道 编辑:UC知道 时间:2024/06/27 04:20:17
先看代码:
USE tempdb
creat table metable(pk int identity(1,1)primary key,a int unique,b nvarchar(100)unique)
creat table mytable2(pk int identity(1,1)primary key,a int unique,b nvarchar(100))
crcat table errortable(a int,b nvarchar(1000),object sysname--->/*sysname是种数据类型吗?*/,date datetime,errno int,severity tingint,state int,message nvarchar(300)xactstate tinyint)
go
create proc sedemotrycatch @a nvarchar(100),@b nvarchar(100)
AS----->这个AS在这里起什么作用?
print N'进入存储过程但未进入TRY区块'
BEGIN TRY
print N'进入TRY区块'
Insert mytable values(@a,@b)
print N'插入记录完结并离开TRY区块'
END TRY
BEGIN CATCH
print N'进入CATCH区块'
IF error_number()=245
print N'处理数据类型转换错误。。。'
else if error_number()=515
print N'处理违被NULL条件约束。。'
else if error_number=2627
print N'处理违被unique条件约束'
ELSE
BEGIn
USE tempdb
creat table metable(pk int identity(1,1)primary key,a int unique,b nvarchar(100)unique)
creat table mytable2(pk int identity(1,1)primary key,a int unique,b nvarchar(100))
crcat table errortable(a int,b nvarchar(1000),object sysname--->/*sysname是种数据类型吗?*/,date datetime,errno int,severity tingint,state int,message nvarchar(300)xactstate tinyint)
go
create proc sedemotrycatch @a nvarchar(100),@b nvarchar(100)
AS----->这个AS在这里起什么作用?
print N'进入存储过程但未进入TRY区块'
BEGIN TRY
print N'进入TRY区块'
Insert mytable values(@a,@b)
print N'插入记录完结并离开TRY区块'
END TRY
BEGIN CATCH
print N'进入CATCH区块'
IF error_number()=245
print N'处理数据类型转换错误。。。'
else if error_number()=515
print N'处理违被NULL条件约束。。'
else if error_number=2627
print N'处理违被unique条件约束'
ELSE
BEGIn
sysname--->/*sysname是种数据类型吗?*/
是类型
AS----->这个AS在这里起什么作用?
类似于vb里的定义成的变量类型.一般都省略.
如DECLARE @i int相当于DECLARE @i AS int
EXEC spdemotrycatch 'a','a' |----->这段的意思是什么?
执行存储过程传递'a','a'参数给他.
EXEC就是执行过程或者函数.估计是EXECUTE的缩写.