1. 在对象资源管理器中新建查询窗口,并输入以下代码,创建一个利用流控制语句的存储过程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 @id char(8)
AS
SELECT 姓名,书名,归还日期 from 读者信息 a join 借阅信息 b
on a.借阅证号=b.借阅证号 join 图书信息 c on b.图书编号=c.图书编号
where a.借阅证号=@id
(2) 执行存储过程rd_br, 查询B00001读者的姓名、所借图书的名称、归还日期。
EXECUTE rd_brw 'B00001'
(3) 使用系统存储过程sp_rename将存储过程rd_brw 更名为rd_borrow.
sp_rename rd_brw,rd_borrow
3. 输入以下代码,创建存储过程reader_info, 执行时通过输入借阅证号,可以查询该借阅证号对应的读者的借阅信息。
CREATE PROCEDURE reader_ info @id VARCHAR(16)
AS
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 @name VARCHAR(10)
AS
SELECT a.借阅证号, 书名,归还日期
FROM 读者信息 a INNER JOIN 借阅信息 b
ON a.借阅证号= b.借阅证号 INNER JOIN 图书信息 c on b.图书编号=c.图书编号
WHERE a.姓名= @name
(2) 执行存储过程reader_n_p,查询“李盼”的借阅证号、所借书籍名称和归还日期。
EXECUTE reader_n_p '李盼'
表中没有‘李盼’的相关字段
(3) 使用系统存储过程sp_helptext,查看存储过程reader_n_p的文本信息。
(4) 如果存储过程reader_n_p执行时没有提供参数,要求能按默认值查询(设姓名为“刘卫华”),则需要如何修改该过程的定义?
CREATE PROCEDURE reader_n_p @name varchar='刘卫华'
AS
SELECT a.借阅证号, 书名,归还日期
FROM 读者信息 a INNER JOIN 借阅信息 b
ON a.借阅证号= b.借阅证号 INNER JOIN 图书信息 c on b.图书编号=c.图书编号
WHERE a.姓名= @name
5. 使用“读者信息”表。
(1) 创建-一个加密的存储过程reader_dt, 查询在“2009-1-1” 以后办借阅卡的读者信息。
CREATE PROCEDURE reader_dt
WITH ENCRYPTION AS
SELECT * FROM 读者信息 where 办卡时间>'2009-1-1'
(2) 执行存储过程reader_dt, 查看返回读者的情况。
EXECUTE reader_dt
(3) 使用T-SQL语句DROP PROCEDURE删除存储过程reader_dt。
drop procedure reader_dt