Oracle笔记 、PL/SQL存储过程

本文介绍了Oracle数据库中PL/SQL存储过程的创建与使用方法,包括无参数存储过程、带参数存储过程(输入参数、输出参数、输入输出参数)、删除表的存储过程及递归存储过程等,并通过具体实例进行演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Oracle笔记 十、PL/SQL存储过程

--create or replace 创建或替换,如果存在就替换,不存在就创建

create or replace procedure p

is

cursor c

is

select * from dept2 for update;

begin

for row_record in c loop

if (row_record.deptno = 30) then

update dept2 set dname = substr(dname, 0, length(dname) - 3) where current of c;

end if;

end loop;

end;

 

exec p;

 

begin

p;

end;

 

--带参存储过程

--in 输入参数,不带in out 默认输入参数

--out 输出参数

--in out 同时带的是输入输入参数

create or replace procedure p2(

a in number,

b number,

s_result out number,

s_temp in out number

)

is

begin

if (a > b) then

s_result := a;

else

s_result := b;

end if;

s_temp := s_temp + 3;

end;

 

--调用存储过程

declare

v_a number := 4;

v_b number := 6;

v_result number;

v_temp number := 5;

begin

p2(v_a, v_b, v_result, v_temp);

dbms_output.put_line(v_a);

dbms_output.put_line(v_b);

dbms_output.put_line(v_result);

dbms_output.put_line(v_temp);

end;

 

---删除一个表的过程

create or replace procedure drop_table(tname varchar2)

as

total int := 0;

begin

select count(*) into total from user_tables

where table_name = upper(tname);

if total >= 1 then

execute immediate 'drop table '||tname; --此处必须用动态sql

end if;

end;

select * from user_tables;

 

--递归存储过程

create or replace procedure pro_emp(sEmpno emp.empno%type, sLevel integer)

is

cursor c is select * from emp where mgr = sEmpno;

prefixStr varchar(255);

begin

for i in 1..sLevel loop

prefixStr := prefixStr || '----';

end loop;

 

for row_data in c loop

dbms_output.put_line(prefixStr || row_data.ename);

pro_emp(row_data.empno, sLevel + 1);

end loop;

end;

 

select * from emp;

begin

pro_emp(7839, 0);

end;

转载于:https://my.oschina.net/zhanggc/blog/1609700

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值