oracle儲存過程

2021-08-13 16:24:12 字數 1266 閱讀 8546

--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;

Oracle儲存過程呼叫儲存過程

oracle儲存過程呼叫有返回結果集的儲存過程一般用光標的方式,宣告乙個游標,把結果集放到游標裡面,然後迴圈游標 declare newcs sys refcursor cs1 number cs2 number cstype table rowtype table列的個數和newcs返回的個數一樣...

ORACLE儲存過程

自定義函式開始 create or replace function fn wftemplateidget templatecategoryid number,organid number,templatemode number return number istemplateid number i...

Oracle 儲存過程

create or replace procedure p 有就替換,沒有就建立 iscursor c is select from emp for update begin for v emp in c loop if v emp.deptno 10 then update emp2 set sa...