文章目录
- 实验目的
- 实验要求
- 实验内容
- 创建并执行存储过程ProcViewCustomer:查看“客户”表中的信息。
- 创建并执行一个名称为CountProc的存储过程,用来获取客户表记录个数。
- 创建并执行存储过程ProcQcustomer:通过客户的客户编号来查询客户的姓名,性别,电话,地址,默认客户编号为“990124”。
- 执行存储过程ProcQcustomer:当输入客户编号为“990546”时,显示该客户的姓名,性别,电话,地址。
- 创建并执行存储过程ProcQproduct:查询有“计算机”的店名,负责人,客服电话。
- 创建并执行存储过程ProcSinProduct:当输入任意一个存在的商品名称时,查询该商品的销售数量。
- 创建并执行存储过程ProcAdd;在商店表中循环插入三条测试数据。
- 将第(6)题中所定义的存储过程修改成根据输入的商品编号,查询该商品的销售数量
- 删除存储过程ProcQcust。
- 总结与思考
实验目的
存储过程是用SQL语言所编写的程序集合,类似于程序设计语言中的函数或过程。本实验要求掌握系统存储过程以及用户自定义存储过程的创建、修改、删除和调用的方法。
实验要求
(1) 调用执行系统存储过程;
(2) 创建自定义存储过程的方法;
(3) 执行自定义存储过程的方法;
(4) 修改和删除自定义存储过程的方法。
实验内容
创建并执行存储过程ProcViewCustomer:查看“客户”表中的信息。
create procedure "ProcViewCustomer" as
begin
select * from 客户表;
end;
call "ProcViewCustomer"();
创建并执行一个名称为CountProc的存储过程,用来获取客户表记录个数。
create procedure "CountProc"
AUTHID DEFINER
as
begin
select count(*) as 客户记录个数 from 客户表;
end;
call "CountProc"();
创建并执行存储过程ProcQcustomer:通过客户的客户编号来查询客户的姓名,性别,电话,地址,默认客户编号为“990124”。
create procedure "ProcQcustomer" (num varchar default '990124')
AS
BEGIN
select 姓名,性别,电话,地址 from 客户表 where 客户编号=num;
END;
call "ProcQcustomer"();
执行存储过程ProcQcustomer:当输入客户编号为“990546”时,显示该客户的姓名,性别,电话,地址。
call "ProcQcustomer"(num='990546');
创建并执行存储过程ProcQproduct:查询有“计算机”的店名,负责人,客服电话。
create procedure "ProcQproduct" ()
AS
BEGIN
select 商店名称,负责人,客服电话 from 卖家表,商品表
where 卖家表.商店编号=商品表.店铺编号 and 商品名称 like '计算机';
end;
call "ProcQproduct"()
创建并执行存储过程ProcSinProduct:当输入任意一个存在的商品名称时,查询该商品的销售数量。
create procedure "ProcSinProduct" (name varchar)
as
begin
select SUM(数量) as 销售数量 from 商品表,购买记录表
where 商品表.商品编号=购买记录表.商品编号 and 商品表.商品名称=name;
end;
call "ProcSinProduct"(name='打印机')
创建并执行存储过程ProcAdd;在商店表中循环插入三条测试数据。
51001 测试1 负责人1 客服电话1 地址1
51002 测试2 负责人2 客服电话2 地址2
51003 测试3 负责人3 客服电话3 地址3
create procedure "ProcAdd" (i in int)
as j int;
begin
for j in 1 ..i loop
insert into 卖家表 values('5100'||j,'测试'||j ,'负责人'||j ,'客服电话'||j,'地址'||j);
end loop;
end;
call "ProcAdd"(3)
select * from "卖家表"
将第(6)题中所定义的存储过程修改成根据输入的商品编号,查询该商品的销售数量
create or replace procedure "ProcSinProduct" (num varchar)
as
begin
select SUM(数量) as 销售数量 from 商品表,购买记录表
where 商品表.商品编号=购买记录表.商品编号 and 商品表.商品编号=num;
end;
call "ProcSinProduct"(num='81887676')
删除存储过程ProcQcust。
drop procedure "ProcAdd";
总结与思考
使用存储过程能为我们带来哪些便利?
重复性地工作将常用sql写好存储起来,下次遇到同样的问题直接使用存储过程即可,不需重写一遍sql,提供效率
DM8将存储过程分为哪几类?各有哪些特点?
存储过程分为三类:
系统存储过程:(System stored Procedure)sp_开头,为SQLSERVER内置存储过程。
扩展存储过程:(Extended stored Procedure),也就是外挂程序,用于扩展SQLSERVER的功能,以sp_或者xp_开头,以DLL的形式单独存在。
用户定义的存储过程:(User-defined stored Procedure),这个就是用户在具体的数据库中自己定义的,名字最好不要以sp_和xp_开头,防止混乱。