当前位置:文章写作网 >日记 >日记 >oracle学习笔记-plsql子程序介绍

oracle学习笔记-plsql子程序介绍

2008-11-12 14:40 作者:tshfang 阅读量:3737 推荐13次 | 我要投稿

子程序包含过程、函数、触发器和包。

(1)过程:用于执行特定的操作。

CREATE OR REPLACE procedure update_deptname(name varchar2,newname varchar2)

is

begin

update scott.dept set dname=newname

WHERE lower(dname)=lower(name);

EXCEPTION

WHEN NO_DATA_FOUND

THEN

DBMS_OUTPUT.put_line ('没有找到该部门!');

END;

/

通过如下方式执行过程。

exec update_deptname('SALES','SALE');

该过程会将dept表中dname是sales的更改成sale。

(2)函数:返回特定数据

函数头部必须包含return子句,函数体内必须包含return语句返回数值。

create or replace function count_dept

return varchar2

is

num varchar2(20);

begin

select count(*) into num

from scott.dept;

return num;

end;

var num varchar2

exec :num:=count_dept

print num

/

NUM

--------------------------------

4

(3)包:用于组合相关的过程和函数,它由包头和包体两部分组成。

包头用于定义公用的常量、变量、过程和函数,并没有具体实现过程和函数。

包体用于实现包头中的过程和函数。

包头:

create or replace package dept_pkg

is

procedure update_deptname(name varchar2,newname varchar2);

function count_dept return varchar2;

end;

包体:

create or replace package body dept_pkg

is

procedure update_deptname(name varchar2,newname varchar2)

is

begin

update scott.dept set dname=newname

WHERE lower(dname)=lower(name);

END;

function count_dept

return varchar2

is

num varchar2(20);

begin

select count(*) into num

from scott.dept;

return num;

end;

end;

调用方法:包名.子程序名。其它方案包:方案名.包名.子程序名

例如:

exec DEPT_PKG.UPDATE_DEPTNAME('SALES','SALE');

var count varchar2(20)

exec :count:=DEPT_PKG.COUNT_DEPT;

print count

/

count

--------------------

4

(4)触发器的知识后续章节将要介绍。

其他人在看啥

    《oracle学习笔记-plsql子程序介绍》的评论 (共 0 条)

    • 沼泽:好厉害, 但我只要看到程序语言,脑细胞就自动抗拒.