一、儲存過程定義:語法
: 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...