一、 实验目的
- 理解存储过程的概念;
- 掌握存储过程的使用方法;
二、实验操作方法和步骤
- 在对象资源管理器中新建查询窗口,并输入以下代码,创建一个利用流控制语句的存储过程letters_print, 该存储过程能够显示26个小写字母。
CREATE PROCEDURE letters_print AS
DECLARE @count int
SET @count=0
WHILE @count<26
BEGIN
PRINT Char (Ascii('a')+ @count)
SET @count=@count +1
END
单击“执行”按钮,查看BookDb数据库“可编程性”节点下的“存储过程”,检查是否有letters_print。
使用EXECUTE命令执行letters_print 存储过程。
2. 使用BookDb数据库中的读者信息表、图书表、借阅信息表。
(1) 创建一个存储过程rd_brw,查询借阅证号为B00001的读者的姓名、所借图书的名称、归还日期。
插入代码为:
CREATE PROCEDURE rd_brw AS
SELECT 姓名
FROM 读者信息
SELECT 书名
FROM [ 图书信息]
SELECT 归还日期
FROM 借阅信息
WHERE 借阅证号='B00001'
执行如下:
(2) 执行存储过程rd_brw 查询B00001读者的姓名、所借图书的名称、归还日期。
3. 输入以下代码,创建存储过程reader_info, 执行时通过输入借阅证号,可以查询该借阅证号对应的读者的借阅信息。
CREATE PROCEDURE reader_ info @id VARCHAR(16)
SELECT a.借阅证号, 姓名, 图书编号, 归还日期
FROM 读者信息 a INER JOIN 借阅信息 b
ON a.借阅证号= b.借阅证号
WHERE a.借阅证号= @id
使用EXECUTE命令执行存储过程reader_ info, 其参数值为“B00001”
4. 使用“读者信息”表“图书信息”表“借阅信息”表。
(1) 创建-一个带参数的存储过程reader_n_p,当任意输入一个读者的姓名时,将从3个表中返回该读者的借阅证号、所借书籍名称和归还日期。
插入代码为:
CREATE PROCEDURE reader_n_p AS
SELECT 读者信息.姓名,读者信息.借阅证号,[ 图书信息].书名,借阅信息.归还日期
FROM 读者信息 INNER JOIN 借阅信息 ON 读者信息.借阅证号=借阅信息.借阅证号
INNER JOIN [ 图书信息] ON [ 图书信息].图书编号=借阅信息.图书编号
执行如下:
(2) 执行存储过程reader_n_p,查询“李盼”的借阅证号、所借书籍名称和归还日期。
插入代码为:
CREATE PROCEDURE reader_n_p AS
SELECT 借阅证号
FROM [读者信息]
WHERE 姓名='李盼'
SELECT 书名
FROM [ 图书信息]
SELECT 归还日期
FROM [借阅信息]
执行如下:因为读者信息里没有名字为李盼的信息,所以默认显示全部读者信息。
(3) 如果存储过程reader_n_p执行时没有提供参数,要求能按默认值查询(设姓名为“刘卫华”),则需要如何修改该过程的定义?
将读者的姓名加入查询过程中,select 姓名 form 读者信息
插入代码为:
CREATE PROCEDURE reader_n_p AS
SELECT 姓名
执行结果如下: