Oracle笔记 十、PL/SQL存储过程
--create or replace 创建或替换,如果存在就替换,不存在就创建
create or replace procedure p
is cursor c isselect * from dept2 for update;
beginfor 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;beginp;
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
)
isbeginif (a > b) then
s_result := a;
elses_result := b;
end if;
s_temp := s_temp + 3;
end;--调用存储过程
declarev_a number := 4;
v_b number := 6;
v_result number;
v_temp number := 5;
beginp2(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;beginselect 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)
iscursor c is select * from emp where mgr = sEmpno;
prefixStr varchar(255);beginfor 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;
beginpro_emp(7839, 0);
end;出处:
blog:http://blog.csdn.net/IBM_hoojo
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权所有,转载请注明出处 本文出自:
赞
收藏
关注
评论
浙公网安备 33010602011771号