存储过程

:idea: [b]1.创建存储过程[/b]
基本格式:
Create or replace procedure procedure_name(参数表列)
Is(或者是as)
PL/SQL块
注解:
[b]<1>[/b]replace表示若该存储过程已经存在,那么将它删除,用下面的语句重新创建存储过程。
[b]<2>[/b]参数表列中要指出参数的类型(in,out,inout以及数据类型),多个参数之间通过逗号隔开
[b]<3>[/b]in类型的参数:表示向存储过程传进数据,存储过程接收该数据。
[b]<4>[/b]out类型的参数:表示存储过程的返回值。
[b]<5>[/b]in out类型的参数:表示该变量可以向存储过程传入值也可以成为返回值的载体
[b]<6>[/b]存储过程当然也可以不需要任何参数,这个时候参数表列为空
[b]<7>[/b]若是存储过程中没有指定参数的类型,默认的类型是in类型
[b]<8>[/b]参数的默认值紧跟在数据类型的后面
创建存储过程举例:[code]
Create or replace procedure procedure_updatePerson(
Per_id in persom.id%type default 95001,per_age out person.age%type,per_sex in out person.sex%type)
)
as
declare
v_hello varchar2(20) :=”hello procedure”;
begin
update person
set sex=per_sex
where id=per_id;
select age into per_age
from person
where id=per_id;
end procedure;
/[/code]
:idea: [b]2. 执行存储过程:[/b]
[code]
Set serveroutput on
VARIABLE
V_age person.age%type;
Begin
Execute procedure_updatePerson(95001,:v_age,”女”)
Dbms_output_print_line(v_age);
End;
/
[/code]
:idea: [b]3.存储过程的嵌套[/b]
举例:
[code]
Create or replace procedure leave_person(per_id in person.id%type)
As
Procedure log_exec
Is
Begin
Insert into log_table(user_id,log_date)
Values(user,sysdate);
End log_exec;
Begin
Delete
From person
Where id=per_id;
--调用存储过程,无参数
Log_exec;
End leave_person;
/[/code]
:idea: [b] 4 存储过程之间的调用[/b]
举例:[code]
Create or replace procedure process_person
Is
Cursor person_cursor is
Select id
From person;
Begin
For per_rec in person_cursor loop
addage_procedure (per_rec.id);------调用另外一个存储过程
end loop;
commit;
end process_person;
/

create or replace procedure addage_procedure(per_id in person.id%type)
is
begin
update person
set age=age+1;
where id=per_id;
end addage_procedure;
/
[/code]
:idea: [b]5.删除存储过程[/b]
[code]
Drop procedure procedure_name;
[/code]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值