七、PLSQL存储函数和存储过程及打断点如何调试_第1页
七、PLSQL存储函数和存储过程及打断点如何调试_第2页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、七、PLSQL存储函数和存储过程及打断点如何调试1、存储过程和函数的概念:ORACLE 提供可以把PL/SQL 程序存储在数据库中,并可以在任何地来运它。这样就叫存储过程或函数。过程和函数统称为PL/SQL程序,他们是被命名的PL/SQL块,均存储在数据库中,并通过输、输出参数或输/输出参数与其调者交换信息。过程和函数的唯区别是函数总向调者返回数据,过程则不返回数据常见的单词:pragma 编译指instantiable 实例化overriding 覆盖重写static member 静态成员delimited 划定的界限identifier 标识符reverse 反向2、存储函数的格式|存储

2、函数格式|create or replace function func_name(dept_id number,salary number)return varchar2is- 函数使过程中,需要声明的变量,记录类型,cursorbegin-函数的执体,如果有返回值需要returnreturn helloworld| v_logo;-commit;如果此处是进insert、delete、update操作,可以通过提交进更改,需再调存储函数后再进提交exception-处理函数执过程中的异常end;详解:1)因为函数需要返回个值, 所以RETURN 包含返回结果的数据类型.2)函数名后是个可选

3、的参数列表, 其中包含IN, OUT 或IN OUT 标记. 参数之间逗号隔开IN 参数标记表传递给函数的值在该函数执中不改变;OUT 标记表个值在函数中进计算并通过该参数传递给调语句;IN OUT 标记表传递给函数的值可以变化并传递给调语句. 若省略标记, 则参数隐含为IN3)A、如何调:法select function() from dual;法:set serveroutput on;var aaa varchar2(10);call hello_world() into :aaa;法三:begindbms_output.put_line(hello_world();end;B、存储过程

4、:由于没有返回值,创建完成后,不能使select语句,只能使pl/sql块执|实例:创建个参函数|create or replace function hello_worldreturn varchar2isbeginreturn hello world;end;如何调:法select hello_world() from dual;法set serveroutput on;var aaa varchar2(10);call hello_world() into :aaa;法三:begindbms_output.put_line(hello_world();end;法四:declarev_bi

5、anling varchar2(40);beginv_bianling := hello_world;dbms_output.put_line(v_bianling);end;|实例:创建个有参函数(传进去的参数v_classid的值是不变的)|求个班学的总薪create or replace function get_sal(v_classid number)return numberisv_sumsal number(10):=0;cursor sal_cursor is select sal from student where classid =v_classid;beginfor c

6、 in sal_cursor loopv_sumsal:=v_sumsal+c.sal;end loop;return v_sumsal;end;|实例三:创建个有参函数(传进去的参数v_classid的值是不变的)|OUT型参数 对于实例中的传进去的参数般是不变的In是输类型,out是输输出类型的如果个形参out修饰 那么它就会在函数中被赋值,(结合例理解)create or replace function get_sal1(v_classid number,total_sal out number)return numberisv_sumsal number(10):=0;cursor

7、sal_cursor is select sal from student where classid =v_classid;begintotal_sal:=0;for c in sal_cursor loopv_sumsal:=v_sumsal+c.sal;total_sal:=total_sal +1;end loop;return v_sumsal;end;如何调:declarev_total_sal number(5);begindbms_output.put_line(get_sal1(1, v_total_sal);dbms_output.put_line(v_total_sal)

8、;end;返回值但是可以定义个 out型参数把 值传出来的例如下:create or replace function get_sal2(v_classid number,total_sal out number)return numberiscursor sal_cursor is select sal from student where classid =v_classid;begintotal_sal:=0;for c in sal_cursor looptotal_sal:= total_sal+c.sal;end loop;return total_sal;end;如何调:declarev_classid number(5):=1;v_total_sal number(10):=0;begindbms_output.put_line(get_sal2(v_classid,v_total_sal);dbms_output.put_line(v_total

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论