表:
--借书信息表
create table Borrow(
图书编号 int not null,
读者编号 int not null,
借阅日期 datetime not null,
应还日期 datetime not null
)insert into Borrow values (111,611,'2007-01-01','2008-01-01')
insert into Borrow values (112,612,'2007-01-02','2008-01-02')
insert into Borrow values (113,613,'2007-01-03','2008-01-03')
insert into Borrow values (114,614,'2007-01-04','2008-01-04')
insert into Borrow values (115,615,'2007-01-05','2008-01-05')
insert into Borrow values (116,616,'2007-01-06','2008-01-06')
insert into Borrow values (117,617,'2007-01-07','2009-01-07')
insert into Borrow values (118,618,'2007-01-08','2009-01-08')
insert into Borrow values (119,619,'2007-01-08','2009-01-08')要实现:根据编号查询读者到期的图书个数存储过程:
create procedure GetOverDateNum
@ReaderID int,@BookNum int output
as
select @BookNum=count(*) from Borrow
where 读者编号=@ReaderID
and datediff(day,应还日期,getdate())>0调用:
declare @num int
exec GetOverDateNum @ReaderID=612,@BookNum=@num output select '到期册数是:',@num这个调用过程麻烦给解释一下。。谢谢。。特别是什么要做一个@num这个变量,还要@BookNum=@num,
最后一句:select '到期册数是:',@num 为什么要这么写,这不是语法有问题吗???
--借书信息表
create table Borrow(
图书编号 int not null,
读者编号 int not null,
借阅日期 datetime not null,
应还日期 datetime not null
)insert into Borrow values (111,611,'2007-01-01','2008-01-01')
insert into Borrow values (112,612,'2007-01-02','2008-01-02')
insert into Borrow values (113,613,'2007-01-03','2008-01-03')
insert into Borrow values (114,614,'2007-01-04','2008-01-04')
insert into Borrow values (115,615,'2007-01-05','2008-01-05')
insert into Borrow values (116,616,'2007-01-06','2008-01-06')
insert into Borrow values (117,617,'2007-01-07','2009-01-07')
insert into Borrow values (118,618,'2007-01-08','2009-01-08')
insert into Borrow values (119,619,'2007-01-08','2009-01-08')要实现:根据编号查询读者到期的图书个数存储过程:
create procedure GetOverDateNum
@ReaderID int,@BookNum int output
as
select @BookNum=count(*) from Borrow
where 读者编号=@ReaderID
and datediff(day,应还日期,getdate())>0调用:
declare @num int
exec GetOverDateNum @ReaderID=612,@BookNum=@num output select '到期册数是:',@num这个调用过程麻烦给解释一下。。谢谢。。特别是什么要做一个@num这个变量,还要@BookNum=@num,
最后一句:select '到期册数是:',@num 为什么要这么写,这不是语法有问题吗???
因为 @BookNum 是输出参数(创建存储过程时指定了 output),所以必须要一个 @num 用来接收输出。
select @num这是把输出参数输出来。 其实这一句没有必要要因为你前面有一句select @BookNum=count(*) from Borrow
where 读者编号=@ReaderID
and datediff(day,应还日期,getdate())>0 就够了。。
上面应该分成两行吧。
select '到期册数是:',@num 是没问题的,相当于一个字段值是:'到期册数是:',另一个字段值就是 @num
@BookNum=@num 这个也可以直接写 @num,前面的形参名称可以省略,也可以写起的。
这个是不能省略的,如果没写成@BookNum=@num,格式出错,编绎通不过