- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 与存储过程对比学习:定义、执行 * [说明]与普通PL/SQL语句块的区别 Is和As没有区别,其他地方亦然 [注]过程体内不能使用查询语句,只能用于赋值(SQL语句块都如此) 如果过程体语句有错误也能创建成功 没有参数就不写,不用() * [例]根据学号显示学生姓名、系别、班级 * [说明]此例为根据输入项目编号,显示项目说明 execute可简写为exec [注]调用带有输出参数的过程时,无需再写exec * [说明]没有返回值,但可以有Out、In Out参数,In参数为默认 在过程执行过程中,如需要返回可直接输入return 过程创建后,可在OEM中查看相应信息 * [例]In、Out参数的使用,输入学号,输出学生平均成绩;并写PL/SQL块该过程 * [例]输入两个数,交换位置 create or replace procedure p_swap(p1 In Out number,p2 In Out number) As v_temp number; begin v_temp := p1; p1 := p2; p2 := v_temp; end; / --调用 * * [说明]与过程对比:必须声名返回值类型,并在函数体里显式返回 * * 执行不需要exec * [例]根据学号显示学生姓名、系别、班级 * [说明]总结一下,加深理解 * [说明]与Java对比,package、interface (1)规范:与应用程序的接口 (2)只有在规范中声名游标或子程序时才需要主体 [说明]由于我们已经在前面说明了一些常用的内置包:dbms_output、dbms_lob、dbms_random,因此我们不再单独介绍内置包了 * [说明]简单说明如何写包规范和包主体 * [例]程序包:包含共有变量v_globalid;过程proc_stu:根据学号显示学生姓名、系别、班级;函数func_stu:根据学号显示学生姓名、系别、班级; --程序包规范 create or replace package pack_stu As v_globalid char(8); procedure proc_stu(v_id varchar2); function func_stu(v_id varchar2) return varchar2; end pack_stu; / --程序包主体 create or replace package body pack_stu As procedure proc_stu(v_id varchar2) Is v_name t_student.f_name%type; v_dept t_student.f_department%type; v_class t_student.f_class%type; begin v_globalid := v_id; select f_name,f_department,f_class into v_name,v_dept,v_class from t_student where f_id=v_id; dbms_output.put_line(学号:||v_name||姓名:||v_dept||班级:||v_class); exception when no_data_found then dbms_output.put_line(未找到相应学生); end proc_stu; function func_stu(v_id varchar2) return varchar2 As v_name t_student.f_name%type; v_dept t_student.f_department%type; v_class t_student.f_class%type; begin v_globalid := v_id; select f_name,f_department,f_class into v_name,v_dept,v_class from t_student where f_id=v_id; return 学号:||v_name||姓名:||v_dept||班级:||v_class; exception when no_data_found then dbms_output.put_line(未找到相应学生); end func_stu; end pack_stu; / --使用程序包 select pack_stu.func_stu(001) from dual; begin dbms_output.put_line(pa
文档评论(0)