您的位置:首页 > 数据库 > Oracle

Oracle(20)pl/sql编程 过程、函数、包以及触发器概念

2017-04-08 16:41 661 查看
①过程用于执行特定的操作,当建立过程时,既可以指定输入参数(in),也可以指定输出参数(out),默认是输入参数。通过在过程中使用输入参数,可以将数据传递到执行部分;通过使用输出参数,可以将执行部分的数据传递到应用环境。

②调用方式

exec 过程名(参数值…)

call 过程名(参数值…)

create or replace procedure pro5(in_ename in varchar2, in_new_sal in number) is
begin
update emp set sal=in_new_sal where ename = in_ename;
end;
/


——————————————————————————————-

①函数

用于返回特定的数据,当建立函数时,在函数头部必须包含return子句,而在函数体内必须包含return语句返回的数据。

②实例

---- 创建一个函数,并带有一个返回值
create or replace function fun1(in_v_ename varchar2)
return number is
v_annual_sal number;
begin
select (sal+nvl(comm, 0))*13 into v_annual_sal from emp where ename=in_v_ename;
return v_annual_sal;
end;
/
----- 调用函数
select fun1('SMITH') from dual;


——————————————————————————————-

①包

用于在逻辑上组合过程和函数,它由包规范和包体两部分组成。

②实例

----------------  包  ----------------
create or replace package mypackage1 is
--声明一个过程
procedure pro1(v_in_ename varchar2, v_in_newsal number);
--声明一个函数
function fun1(v_in_ename varchar2) return number;
end;
/
------  包体 其中的方法需在包中声明,否则无法使用 --------
create or replace package body mypackage1 is
--实现过程
procedure pro1(v_in_ename varchar2, v_in_newsal number) is
begin
update emp set sal=v_in_newsal where ename=v_in_ename;
end;
--实现函数
function fun1(v_in_ename varchar2) return number is
v_annual_sal number;
begin
select (sal+nvl(comm,0))*13 into v_annual_sal from emp where ename =  v_in_ename;
return v_annual_sal;
end;
end;
----------------  包调用  ----------------
exec mypackage1.pro1('SMITH', 2);


——————————————————————————————-

①触发器

是指隐含的执行的存储过程。当定义触发器时,必须指定触发的事件和触发的操作,常用的触发事件包括insert,update,delete语句,而触发操作实际就是一个pl/sql块。可以使用create trigger来建立触发器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: