欢迎来到天天文库
浏览记录
ID:57145405
大小:426.50 KB
页数:28页
时间:2020-08-03
《实验6 PLSQL程序设计.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验6PL/SQL程序设计1实验目的(1)掌握PL/SQL程序开发方法。(2)掌握存储过程、函数、触发器、包的创建于调用。2实验要求(1)根据图书销售系统业务要求创建特定的存储过程、函数、触发器。(2)根据图书销售系统业务要求将图书销售系统相关的函数、存储过程封装到包里。3实验步骤以bs用户登录BOOKSALES数据库,利用PL/SQL程序编写下列功能模块。(1)创建一个存储过程,输出不同类型图书的数量、平均价格。SQL>createorreplaceprocedureproc_category_static2as3--定义游标,获取当前有哪些图书种类4curso
2、rc_all_categoryisselectdistinctcategoryfrombooks;5--图书的平均价格6v_avg_costnumber;7begin8--保存图书种类9forv_each_categoryinc_all_categoryLOOP10selectavg(retail)intov_avg_costfrombookswherecategory=v_each_category.categorygroupbycategory;11dbms_output.put_line('种类为:'
3、
4、v_each_category.category
5、
6、'
7、,平均价格为:'
8、
9、v_avg_cost);12ENDLOOP;13endproc_category_static;14/(1)创建一个存储过程,以客户号为参数,输出该客户订购的所有图书的名称与数量。createorreplaceprocedureproc_get_orderinfo(2p_customer_idcustomers.customer_id%type)3as4--声明游标存储客户的订单号5cursorc_orderidisselectorder_idfromorderswherecustomer_id=p_customer_id;6v_orderid
10、orders.order_id%type;7--声明游标存储订单信息8cursorc_orderitemisselectISBN,sum(quantity)totalnumfromorderitemwhereorder_id=v_orderidgroupbyISBN;9--保存图书的书名10v_titlebooks.title%type;1112begin13openc_orderid;14LOOP15fetchc_orderidintov_orderid;16exitwhenc_orderid%NOTFOUND;17forv_orderiteminc_order
11、itemLOOP18selecttitleintov_titlefrombookswhereISBN=v_orderitem.ISBN;19DBMS_OUTPUT.PUT_LINE(p_customer_id
12、
13、'订购'
14、
15、v_title
16、
17、'的数量是'
18、
19、v_orderitem.totalnum);20endLOOP;21endLOOP;22closec_orderid;23endproc_get_orderinfo;24/execproc_get_orderinfoo(1001);(1)创建一个存储过程,以订单号为参数,输出该订单中所有图书的名称、单价、数量。
20、createorreplaceprocedureproc_get_orderinfoo(p_order_idorderitem.order_id%type)as--声明游标存储订单号的ISBNcursorc_ISBNisselectISBNfromorderitemwhereorder_id=p_order_id;v_ISBNorderitem.ISBN%type;--声明游标存储订单信息cursorc_orderitemisselectISBN,sum(quantity)totalnumfromorderitemwhereISBN=v_ISBN;v_titleb
21、ooks.title%type;v_retailbooks.retail%type;beginopenc_ISBN;LOOPfetchc_ISBNintov_ISBN;exitwhenc_ISBN%NOTFOUND;forv_orderiteminc_orderitemLOOPselecttitle,retailintov_title,v_retailfrombookswhereISBN=v_orderitem.ISBN;DBMS_OUTPUT.PUT_LINE(p_order_id
22、
23、v_title
24、
25、v_retail
26、
27、v_orderitem.totalnum
28、);end
此文档下载收益归作者所有