Oracle 儲存過程

2021-05-24 08:39:18 字數 2769 閱讀 7547

一、儲存過程定義:語法

: create  [or replace]   procedure proc_name

[(para_name [in | out | in out]  type 

para_name [in | out | in out]  type 

[,…..])]

is  |  as

宣告部分 變數

1 integer :=0;

變數2 date;

begin

執行部分;

exception

異常處理部分

end  proc_name;

說明: u

每個引數寫法:引數名,屬性,型別 u

create  [or replace]

》如果存在就替換,

不存在就建立。 u

命名規範:

pro_myname

例子:createorreplaceprocedurepro_emp (v_noinemp.empno%type,v_nameoutemp.ename%type,v_saloutemp.sal%type)

is

e_sal_errorexception;

begin

selectename,salintov_name,v_salfromemp

whereempno=v_no;

ifv_sal>

2500

then

dbms_output.put_line(

'soijdiofj'

||v_sal);

raisee_sal_error;

endif;

exception

whenno_data_foundthen

dbms_output.put_line(

'no_data_found >>>'

||v_no);  

whene_sal_errorthen

dbms_output.put_line(

'e_sal_error>>>>>'

);endpro_emp;

二、執行儲存過程

-- 在

pl/sql 中

declare

v_a1 emp.ename%type;

v_a2 emp.sal%type;

begin

--這裡採取名稱表示法(區別於位置表示法)

query_emp(v_no=>5678,v_name=>v_a1,v_sal=>v_a2);

end;

declare

v_name emp.ename%type;

v_sal emp.job%type;

v_no emp.empno%type;

begin

--22222  pro_emp(7698,v_name,v_sal);

---33333 pro_emp(v_no=>

7698

,v_sal=>v_sal,v_name=>v_name);

dbms_output.put_line(

'ãû×ö£º'

||v_name); 

end;

說明:省略符號「=>,那麼引數順序和定義一致,不省略的話,可以隨便乙個順序。

三、檢視

select text from user_source where name='query_emp';

select text from user_source where

name='pro_emp';

注意:儲存過程名稱要大寫

四、刪除

-- 刪除儲存過程

drop procedure query_emp;

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