oracle存储过程

来源:互联网 发布:himall2.6 源码 编辑:程序博客网 时间:2024/06/05 12:19

--oracle 存储过程   利用游标来实现存储过程

CREATE or replace PROCEDURE proc_test

as
v_cname province.pname%type;   --申明province表pname列变量
v_cid province.pid%type; --申明province表pid列的变量
v_city province%rowtype; --申明province表一行的变量
cursor cur_city is select * from province;  --申明一个游标 游标的内容为province所有的内容
begin
open cur_city;--开启游标
loop --循环游标
fetch cur_city into v_city;--将游标的值赋值给v_city这个变量

exit when cur_city%notfound;--判断是否有数据,有数据就返回false ,没有了就返回true

  v_cid:=v_city.pid;

select pname into v_cname from province where pid=v_cid;
if sql%found then--利用隐式的游标判断是否有值。sql是oracle自带的隐式游标的属性,
dbms_output.put_line('---------------------');
dbms_output.put_line(v_cname||'   ');
end if;

for v_city in (select * from province where pid=v_cid) --利用for in 语句来实现遍历

--for 游标变量 in (select语句)loop end loop; 隐式游标的申明

loop 
dbms_output.put_line(v_city.pid||'   '||v_city.pname||'   '||v_city.cid);
end loop;
end loop;
close cur_city;

end;  

--在command中查看存储过程的错误  proc_test是存储过程的别名;

show errors procedure proc_test;



--查看proc_test存储过程

select * from user_source where='PROC_TEST' order by line;



原创粉丝点击