nuch数据库实验五“存储过程”

本文档详细介绍了如何在DingBao数据库中创建存储过程C_P_Proc,包括不使用游标和使用游标的两种方法,以及如何执行存储过程获取特定顾客的订阅信息。后续还展示了如何创建统计顾客订阅总份数的存储过程C_P_Pre,并通过示例演示了针对'李涛'和'钱金浩'的查询操作。最后,涉及了删除存储过程的过程。
摘要由CSDN通过智能技术生成

实验五内容:

一、实验指导书p120(5)-(7),创建此存储过程采用2种方式,1、不用游标方式;2、用游标方式(游标使用,可参看实验指导书p124例10.2)。

二、1、创建存储过程,统计某顾客的报纸订阅总份数,以顾客号为输入参数,订阅总份数为输出参数;

   2、执行存储过程,实现对某一顾客的报纸订阅总份数打印出,如输出“10000001”号顾客的订阅总份数。

‘不带游标
(1)在DingBao数据库中创建存储过程C_P_Proc,实现参数化查询顾客订阅信息,查询参数为顾客姓名,要求能查询出参数指定的顾客编号、顾客名、订阅报纸名及订阅份数等信息。

CREATE PROCEDURE C_P_Proc @name VARCHAR(8)
AS 
SELECT CUSTOMER.cna,CUSTOMER.cno,PAPER.pna,CP.num
FROM PAPER,CP,CUSTOMER
WHERE cna=@name AND CUSTOMER.cno=CP.cno AND
      PAPER.pno=CP.pno;

带游标

create procedure C_P_Proc2(@cname varchar(10))
as
	declare @cno char(4);
	declare @cna varchar(10);
	declare @pna varchar(20);
	declare @num int ;

--新建游标
declare db_cursor cursor 
for select customer.cno,cna,pna,num
from cp,customer,paper
where cna=@cname and cp.cno=customer.cno and paper.pno=cp.pno;

--打开游标
open db_cursor
--从游标里取出数据并赋值给变量
fetch next from db_cursor into @cno,@cna,@pna,@num
begin
--判断游标的状态
-- 0 fetch语句成功     
-- -1 fetch语句失败或此行不在结果集中     
-- -2 被提取的行不存在
while @@FETCH_STATUS=0
begin
print(convert(varchar,@cno)+' '+convert(varchar,@cna)+' '+convert(varchar,@pna)+' '+convert(varchar,@num));
--用游标去取下一条记录
fetch next from db_cursor into @cno,@cna,@pna,@num
end
--关闭游标
close db_cursor
--撤销游标
deallocate db_cursor
END
Go

(2)执行存储过程C_P_Pro,实现对“李涛”、“钱金浩”等不同顾客的订阅信息放入查询。

Execute C_P_Proc @name='李涛'

用游标的查询

Execute C_P_Proc2 @cname='李涛'

Execute C_P_Proc @name='钱金浩'

用游标的查询

Execute C_P_Proc2 @cname='钱金浩'

(3)删除存储过程C_P_Pro。

DROP PROCEDURE C_P_Proc

1、创建存储过程,统计某顾客的报纸订阅总份数,以顾客号为输入参数,订阅总份数为输出参数;

create procedure C_P_Pre
(
 @cno char(4) ,
@num int output
)
as
select @num=sum(num)
from cp
where  @cno=cp.cno

2、执行存储过程,实现对某一顾客的报纸订阅总份数打印出,如输出“10000001”号顾客的订阅总份数。

declare @num int 
execute C_P_Pre '0001',@num output
select @num
print '“0001”号顾客订阅的总份数为:'+convert(char, @num)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值