欢迎来到天天文库
浏览记录
ID:50609856
大小:173.50 KB
页数:79页
时间:2020-03-12
《Oracle 数据库应用教程课件 第7章.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、第7章过程、函数和程序包7.17.27.3小结上机实验七7.1子程序以前我们写的PL/SQL语句程序都是瞬时的,都没有命名。其缺点是:在每次执行的时候都要被编译,并且不能被存储在数据库中,其他PL/SQL块也无法调用它们。现在我们把命名的PL/SQL块叫做子程序,它们存储在数据库中,可以为它们指定参数,可以在数据库客户端和应用程序中调用。命名的PL/SQL程序包括存储过程和函数。程序包是存储过程和函数的集合。子程序结构与PL/SQL匿名块的相同点在于都由声明、执行、异常三大部分构成,不同之处在于,PL/SQL匿名块的声明可选,而子程序的声
2、明则是必需的。子程序的优点如下:(1)模块化:通过子程序可以将程序分解为可管理的、明确的逻辑模块。(2)可重用性:子程序在创建并执行后,就可以在任何应用程序中使用。(3)可维护性:子程序可以简化维护操作。(4)安全性:用户可以设置权限,保护子程序中的数据,只能让用户提供的过程和函数访问数据。这不仅可以让数据更加安全,同时可保证正确性。子程序有两种类型:过程和函数。其中,过程用于执行某项操作;函数用于执行某项操作并返回值。7.1.1过程1.过程的创建和执行过程可使用createprocedure语句创建,语法如下:createorrepla
3、ceprocedure[<方案名>.]<存储过程名>[parameterlist]{Is
4、as}[local_declarations];Beginexecutablestatements[exception][Exception_handlers]End[procedure_name];保留字Is前面的过程定义称为过程头。过程头包括过程名和具有数据类型的参数列表。过程体包括声明部分、执行部分和异常处理部分。过程体从保留字Is之后开始。其中,声明部分和异常处理部分是可选的;执行部分至少包含一条语句。这里的Is
5、as就相当于declare声
6、明部分,除了拥有前面的一个过程声明语句外,其他和以前的匿名PL/SQL块一样。其中,replace表示在创建存储过程中,如果已经存在同名的存储过程,则重新创建;如果没有此关键词,则当数据库中有同名的过程时会报错“ORA-00955号错误:名称已被现有对象占用”。必须将同名的过程删除后才能创建。1)创建不带参数的过程。【例7.1】创建一个过程multiplication,用来实现九九乘法表。SQL>createorreplaceproceduremultiplication2as3iinteger;4jinteger;5begin6dbms
7、_output.put_line('printmultiplication');7foriin1..9loop8forjin1..9loop9ifi>=jthen10dbms_output.put(to_char(j)
8、
9、'*'
10、
11、11to_char(i)
12、
13、'='
14、
15、to_char(i*j)
16、
17、'');12endif;13endloop;14dbms_output.put_line('');15endloop;16end;17/过程已创建。出现编译错误的时候可以用showerror或者descuser_errors来调试。2)执行过程创
18、建过程的时候并不会执行过程,必须在这之后调用过程来执行。执行过程的方法有两种:一种是在SQL提示符下,使用execute语句来执行过程;另一种是在匿名块中调用。execute执行过程的语法如下:executeprocedure_name(parameters_list);【例7.2】执行multiplication过程。SQL>setserverouton--将SQL*Plus的输出打开SQL>executemultiplication--执行过程multiplication用execute命令。printmultiplication1*
19、1=11*2=22*2=41*3=32*3=63*3=91*4=42*4=83*4=124*4=161*5=52*5=103*5=154*5=205*5=251*6=62*6=123*6=184*6=245*6=306*6=361*7=72*7=143*7=214*7=285*7=356*7=427*7=491*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=641*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81PL/SQL过程已成功完成。【例7
20、.3】在匿名块中调用过程multiplication。SQL>begin2multiplication;3end;4/程序运行结果同上。2.创建带参数的过程调用程序通过参数可向被调用子程序传递
此文档下载收益归作者所有