Oracle儲存過程

2021-06-05 07:43:58 字數 2147 閱讀 1587

--無參的儲存過程

create or replace procedure proc_one

as v_emp emp%rowtype;

begin

select * into v_emp from emp where empno=7788;

dbms_output.put_line(v_emp.ename||' '||v_emp.sal);

end;

--在pl/sql developer command視窗檢視過程編譯錯誤

/show errors;

/--呼叫過程授權

grant execute on proc_one to px; --授予執行權給px使用者

grant execute on proc_one to public;--授予所有使用者

--呼叫儲存過程

sql> set serveroutput on; --設定輸出

sql> exec scott.proc_one;

sql> exec scott.proc_one();

--pl/sql**塊方式呼叫

begin

proc_one();

end;

--oracle儲存過程引數形式有:

--in 預設形式 可以省略in 可以指定預設值

--out 輸出引數

--in out 輸入輸出引數

--帶輸入引數的儲存過程

create or replace procedure proc_two

(v_no in number:=7788) --引數不需要指定長度並可以指定預設值 可以省略in

as v_emp emp%rowtype;

begin

select * into v_emp from emp where empno=v_no;

dbms_output.put_line(v_emp.ename||' '||v_emp.sal);

exception

when no_data_found then

dbms_output.put_line('沒有找到資料');

end;

--帶輸出引數的儲存過程

create or replace procedure proc_three

(v_no in dept.deptno%type:=10,

out_deptname out dept.dname%type)

isbegin

select dname into out_deptname from dept where deptno=v_no;

end;

--呼叫

declare

v_dname dept.dname%type;

v_dno dept.deptno%type;

begin

v_dno:='&部門編號';

--proc_three(v_dno,v_dname);

proc_three(out_deptname=>v_dname,v_no=>v_dno);

--通過指定名稱傳遞實參,這樣可以不按位置順序

dbms_output.put_line('編號為'||v_dno||'的部門名稱:'||v_dname);

end;

--帶輸入輸出引數的儲存過程

create or replace procedure proc_four

(v_a in out number,v_b in out number)

as v_temp number;

begin

v_temp:=v_a;

v_a:=v_b;

v_b:=v_temp;

end;

--呼叫

declare

n number:=100;

m number:=200;

begin

dbms_output.put_line('交換前--n:'||n||' m:'||m);

proc_four(n,m);

dbms_output.put_line('交換後--n:'||n||' m:'||m);

end;

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