- 要求把productinfo表中数据根据不同的产品类型把数据输出到屏幕。
create or replace procedure product_cur_prc
as
cur_ctgy productinfo.category%type;
cur_ctgyname categoryinfo.categoryname%type;
cur_prtifo productinfo%rowtype;
cursor cur_category
is
select category from productinfo group by category;
begin
open cur_category;
loop
fetch cur_category into cur_ctgy;
exit when cur_category%notfound;
select categoryinfo.categoryname into cur_ctgyname from categoryinfo where categoryinfo.categoryid=cur_ctgy;--根据类型编码得到产品类型名称
if sql%found then
dbms_output.put_line('-----------------------');
dbms_output.put_line(cur_ctgyname || ':');
end if;
for my_prdinfo_rec in (select * from productinfo where category=cur_ctgy) loop
dbms_output.put_line('产品名称:'||my_prdinfo_rec.productname||'产品价格:'||my_prdinfo_rec.productprice || '产品数量:'||my_prdinfo_rec.quantity);
end loop;
end loop;
close cur_category;
end;
begin
product_cur_prc();
end;
输出结果为:
———————–
雨具:
产品名称:天堂伞产品价格:59产品数量:50
电视:
产品名称:夏普LCD-48G100A产品价格:7000产品数量:20
产品名称:海尔XQB50-918A产品价格:1100产品数量:29
产品名称:三星XQB50-918A产品价格:3600产品数量:12
产品名称:华为XQB50-918A产品价格:2500产品数量:111
洗衣机:
产品名称:台电QB50-918A产品价格:400产品数量:129
路由器:
产品名称:恩克斯-918A产品价格:2800产品数量:22