数据库系统基础教程--习题9.4.2(!c)的存储过程解答

数据库系统基础教程--习题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表的结构:

当前表的数据:


执行过程:

执行后的结果

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值