oracle过程、函数和程序包
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3
杭州电子科技大学
导航
PL/SQL过程 PL/SQL函数 PL/SQL包
Oracle 数据库应用与设计
4
杭州电子科技大学
Oracle 数据库应用与设计
PL/SQL过程
过程是指用于执行特定操作的PL/SQL块
通过使用过程,不仅可以简化客户应用的开发和维护, 而且可以提高应用程序的运行性能。
8
杭州电子科技大学
Oracle 数据库应用与设计
PL/SQL过程-建立带有输出参数的过程
通过使用输入参数,可以将数据或消息传递到调用环境和应用程序。 当定义输出参数时,需要制定参数模式为OUT。 下面建立用于更新雇员工资并输出雇员姓名的过程update_sal为例。
9
杭州电子科技大学
Oracle 数据库应用与设计
过程、函数和包
杭州电子科技大学
目标
Oracle 数据库应用与设计
在完成本章学习后,你将掌握下列技能;
PL/SQL过程的定义与用法 PL/SQL函数的定义与用法 PL/SQL包的定义与用法
2
杭州电子科技大学
本章内容
PL/SQL过程 PL/SQL函数 PL/SQL包
Oracle 数据库应用与设计
allow empl.allow%TYPE,deptno empl.deptno%TYPE) IS BEGIN INSERT INTO empl VALUES(empno,ebirthday,ename,ejob,egrade,emajor,indate ,salary,allow,depno); END;
语法:
CREATE [OR REPLACE] PROCEDURE procedure_源自文库ame(argument1[mode1] datatype1,argument2[mode2] datatype2,…)
{IS|AS}
PL/SQL Block;
其中procedure_name指定过程名,argument指定过程 参数;IS或AS用于开始PL/SQL块。
13
杭州电子科技大学
Oracle 数据库应用与设计
PL/SQL过程-调用无参数的过程
直接引用过程名 exec out_time
14
杭州电子科技大学
Oracle 数据库应用与设计
PL/SQL过程-调用带有输入参数的过程
需要为输入参数提供数据值
exec add_empl(1111, ’1980-34’, ’lei’, ’programmer’, 1, 7369, SYSDATE, 800, null, 30)
END; /
12
杭州电子科技大学
PL/SQL过程-调用过程
Oracle 数据库应用与设计
在SQL*PLUS中调用过程时,需要使用CALL或者 EXECUTE命令;而在PL/SQL块中过程可以直接应用。
过程调用带参数分4种情况:
– 如果无参数,那么可以直接引用过程名; – 如果有输入参数,那么需要为输入参数提供数值; – 如果带有输出参数,那么需要使用变量接收输出结果; – 如果有输入输出参数,那么调用时需要使用具有输入值的变量。
CREATE OR REPLACE PROCEDURE devide( num1 IN OUT NUMBER,num2 IN OUT NUMBER)
IS v1 NUMBER; v2 NUMBER;
BEGIN v1:=TRUNC(num1/num2); v2:=MOD(num1,num2); num1:=v1; num2:=v2;
5
杭州电子科技大学
Oracle 数据库应用与设计
PL/SQL过程-建立无参数的过程
下面以建立用于输出当前日期和时间的过程 out_time为例。
CREATE OR REPLACE PROCEDURE out_time IS BEGIN
DBMS_SESSION.SET_NLS(‘NLS_DATE_FOR MAT’,’’’YYYY-MM-DD HH24:MI:SS’’’); DBMS_OUTPUT.PUT_LINE(sysdate); END; /
empno empl.empno%TYPE,ename empl.ename%TYPE, ebirthday empl.ebirthday%TYPE, egrade empl.egrade%TYPE, ejob empl.ejob%TYPE,emajor empl.emajor%TYPE, indate empl.indate%TYPE,salary empl.salary%TYPE,
15
杭州电子科技大学
Oracle 数据库应用与设计
PL/SQL过程-调用带有输出参数的过程
需要使用变量接受输出参数的数据值 DECLARE v_name empl.ename%TYPE; BEGIN update_sal(&eno,&salary,v_name); DBMS_OUTPUT.PUT_LINE(‘name:’||v_name); END; / 输入 雇员号的值: 1111 输入工资的值: 2500 姓名:lei
6
杭州电子科技大学
Oracle 数据库应用与设计
PL/SQL过程-建立带有输入参数的过程
通过使用输入参数,可以将应用程序数据传 递到过程。
当定义过程参数时,默认参数模式就是输入 参数
可以使用IN关键字显式定义输入参数。
7
杭州电子科技大学
Oracle 数据库应用与设计
CREATE OR REPLACE PROCEDURE add_empl(
CREATE OR REPLACE PROCEDURE update_sal( eno varhcar2, sal NUMBER, name OUT VARCHAR2)
IS BEGIN
UPDATE empl SET salary=sal WHERE empno=eno RETURNING ename INTO name; END; /
10
杭州电子科技大学
Oracle 数据库应用与设计
PL/SQL过程-建立带有输入输出参数的过程
通过在过程中使用输入输出函数,可以调用过程 时输入数据到过程,在调用结束后输出数据到调 用环境和应用程序。
当定义输入输出参数时,需要指定参数模式为 IN OUT。
11
杭州电子科技大学
Oracle 数据库应用与设计