数据库SQL语言的程序问题

来源:百度知道 编辑:UC知道 时间:2024/05/23 13:54:49
tszz(图书编号,图书名称,出版社,单价,册数,采购日期,可借状态(0表示可借1表示不可借))
tsc(图书编号,图书条码号,图书状态(0表示库存1表示借出),操作日期)
dz(读者条码号,读者编号,读者姓名,出生日期,工作单位,可借数(最大值为8),已借数,状态(0,可借,1不可借,如果可借数=已借数就不可借)
jymx(图书条码号,读者条码号,借还状态(0,归还,1借出)操作日期)
请用SQL 语言 触发器以及存储过程还有游标完成下列
1,图书借阅,
2,图书归还
3,打印王平在
2009-01-01到2009-12-31期间的借阅明细包括读者姓名,读者编号,借阅日期,借还状态)

对于第一个,应该是先判断太tsc中的状态和dz中的状态,并且判断可借数和已借数是否相等并且借阅之后要修改tszz,tsc,dz中的状态位同时还要在jymx中生成一条借阅记录,剩下的2个以此类推
第一个我是这么写的
create procedure tsjy
@tstmh char(10),
@dztmh numeric 9(18,0),
@szzt int,
@tszt int,
as
set @szzt=(select szzt
from Dz
where dztmh=@dztmh)
set @tszt=(select tszt
from Tsc
where tstmh=@tstmh)
if @szzt=1 or @tszt=1
begin
print‘不可借阅图书’
end
else
update Dz
set yjs=yjs+1
where dz.dztmh=@dztmh
update Tszz
set ceshu=ceshu-1
where tsbh=(select tsbh
from tsc

create procedure tsjy
@dzbh varchar(8),
@tsbh varchar(10),
@tstmh VARCHAR(8)

as

DECLARE @szzt INT
DECLARE @kjzt INT
DECLARE @tszt INT

SELECT @szzt = szzt
FROM dz
WHERE dzbh = @dzbh

SELECT @kjzt = kjzt
FROM tszz
WHERE tsbh = @tsbh

SELECT @tszt = tszt
FROM tsc
WHERE tsbh = @tsbh and tstmh=@tstmh

IF @szzt = 0 AND @kjzt = 0 AND @tszt = 0
BEGIN
UPDATE tszz
SET ceshu = ceshu - 1
WHERE tsbh = @tsbh
DECLARE @ceshu INT
SELECT @ceshu = ceshu
FROM tszz
WHERE tsbh = @tsbh
IF @ceshu <= 0
BEGIN
UPDATE tszz
SET kjzt=1
WHERE tsbh=@tsbh
END
UPDATE tsc
SET tszt = 1
WHERE tstmh=@tstmh and tsbh = @tsbh

UPDATE dz
SET yjs = yjs + 1
WHERE dzbh = @dzbh
DECLARE @kjs INT