数据库系统基础教程--习题9.4.2
题目:将型号,速度,ram,硬盘和价格信息作为参数,将该信息插入到关系PC中。然而,如果已经有这种型号的PC(假定插入的约束被违反产生异常,这是@SQLSTATE为'2300'),那么该型号加1直到找到一个不存在的PC型号。
存储过程写法代码如下(运行环境MSSQL2008):
drop proc up_PC_insert
go
create proc up_PC_insert
@model smallint,
@speed real,
@ram smallint,
@hd smallint,
@price smallint
as
while 1 = 1
begin
begin try
insert into PC(model, speed, ram, hd, price)
values(@model, @speed, @ram, @hd, @price)
BREAK
end try
begin catch
IF ERROR_NUMBER() = 2627
begin
set @model = @model+1
end
end catch
end
exec up_PC_insert '1012', '2.3', '4096', '250', '2000'
1.MSSQL2008插入的约束被违反产生异常number为2627
2.ERROR_NUMBER() 在CATCH块中调用时,返回错误消息的number
PC表的结构:
当前表的数据:
执行过程:
执行后的结果