PL/SQL5之——存储过程(stored procedure)

[size=x-large][b]存储过程(stored procedure)[/b][/size],其实就是一个带有名字的PL/SQL程序块。

先举一个简单的存储过程小例子:

create or replace procedure p
is
cursor c is
select * from emp for update
begin
for v_emp in c loop
if(v_emp.deptno = 10)then
update emp set sal = sal + 10 where current of c;
elsif(v_emp.deptno = 20)then
update emp set sal = sal + 20 where current of c;
else
update emp set sal = sal + 30 where current of c;
end if;

end loop;
commit;
end;

怎样运行这个存储过程呢?有两个方式:
1.

exec p;

2.

begin
p;
end;


[b]带参数的存储过程[/b]

--创建存储过程
create or replace procedure p
(v_a in number, v_b number, v_return out number, v_temp in out number)
is
begin
if(v-a > v_b)then
v_return := v_a;
else
v_return :=v_b;
end if;
v_temp :=v_temp + 1;
end;

[b]其中:[/b]1.“v_a in number”的in表示传入参数;
2.“v_b number”默认为传入参数;
3.“v_return out number”的out表示输出参数;
4.“v_temp in out number”表示为能同时做传入和输出参数。


--调用存储过程
declare
v_a number := 3;
v_b number := 4;
v_return number;
v_temp number := 5;
begin
p(v_a, v_b, v_return, v_temp);
dbms_output.put_line(v_return);
dbms_output.put_line(v_temp);
end;


[b]创建函数(function)[/b]

create or replace function sal_tax
(v_sal number)
return number
is
begin
if(v_sal < 2000)then
return 0.10;
elsif(v_sal < 3000)then
return 0.15;
else
return 0.20;
end if;
end;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
除了函数,数据库中还可以存储以下类型的PL/SQL代码块: 1. 存储过程Stored Procedure):存储过程是一段被命名的PL/SQL代码块,可以在数据库中进行存储和重复调用。它可以接受参数并执行一系列的SQL语句和逻辑操作,常用于实现复杂的业务逻辑。 2. 触发器(Trigger):触发器是一种特殊类型的存储过程,它与数据库中的表相关联,并在特定事件发生或特定条件满足时自动触发执行。例如,在插入、更新或删除表中的数据时触发器可以执行相应的操作。 3. 包(Package):包是一种将相关的PL/SQL对象(如函数、过程、变量等)封装在一起的容器。它提供了更结构化的组织方式,使得代码更易于维护和重用。包可以包含包头和包体两部分,包头声明了包的接口,而包体定义了具体的实现。 4. 类型(Type):类型是一种用户定义的数据结构,可以用于创建自定义数据类型。在PL/SQL中,可以定义记录类型、表类型和对象类型等。类型可以作为参数、变量或返回值在PL/SQL代码中使用。 5. 异常处理程序(Exception Handler):异常处理程序是一段用于捕获和处理异常的PL/SQL代码块。它可以在程序执行过程中检测到异常,并根据需要执行相应的错误处理逻辑。 以上是数据库中可以存储的除函数外的其他类型的PL/SQL代码块。它们都可以在数据库中进行定义、存储和调用,用于实现不同的业务逻辑和数据处理需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值