oracle儲存過程 以oracle自帶例子資料庫的表舉例1、create or replace procedure p
is cursor c is
select * from emp2 for update;
begin
for v_emp in c loop
if(v_emp.sal <2000) then
update emp2 set sal =sal+1 where current of c ;
elsif(v_emp.sal>=2000) then
delete from emp2 where current of c;
end if;
end loop;
commit;
end;
建立了儲存過程不代表執行了儲存過程;
執行此儲存過程 :
方式一 exec p;
方式二begin
p;end;
2、帶引數的儲存過程
in 相當於程式裡的引數,供傳入用,在儲存過程不能改變其值;
out 相當於程式裡的返回值,在儲存過程中可以為其賦值傳出;
in out 既可以當引數又可以當返回值用;
不帶上述說明符預設為in型別;
下例中v_a v_b 為in型別
v_c 為out型別
v_d 為in out 型別
create or replace procedure p(v_a in number,v_b number,v_c out number,v_d in out number)
isbegin
if(v_a > v_b) then
v_c := v_a;
else
v_c := v_b;
end if;
v_d := v_d+1;
end;
---> 除錯時:
可以在命令視窗除錯,出錯時 用show errors 顯示出錯資訊;
可以在pldv中除錯;
---> 執行時:
可以在命令視窗執行:
declare
v_a number:=3;
v_b number:=4;
v_c number;
v_d number:=5;
begin
p(v_a,v_b,v_c,v_d);
dbms_output.put_line(v_c);
dbms_output.put_line(v_d);
end;
可以在pldv中除錯;
Oracle儲存過程呼叫儲存過程
oracle儲存過程呼叫有返回結果集的儲存過程一般用光標的方式,宣告乙個游標,把結果集放到游標裡面,然後迴圈游標 declare newcs sys refcursor cs1 number cs2 number cstype table rowtype table列的個數和newcs返回的個數一樣...
呼叫儲存過程
用乙個命令物件呼叫儲存過程,就是定義儲存過程的名稱,給過程的每個引數新增引數定義,然後執行命令。1.呼叫沒有返回值的儲存過程 呼叫儲存過程的最簡單示例是不給呼叫者返回任何值。下面定義了兩個這樣的儲存過程,乙個用於更新現有的region記錄,另乙個用於刪除指定的region記錄。1 記錄的更新 cre...
儲存過程呼叫
size medium color blue 於 size small 儲存過程 包含三部分 宣告,執行部分,異常。可以有無引數程式和帶引數儲存過程。無參程式語法 1 create or replace procedure noparpro 2 as 3 begin 4 5 exception 6 ...