--oracle 存储过程 利用游标来实现存储过程
CREATE or replace PROCEDURE proc_test
asv_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;
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; 隐式游标的申明
loopdbms_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;