Oracle 儲存過程(一)

2022-09-14 04:30:13 字數 2209 閱讀 1455

一:定義

所謂儲存過程(stored procedure),就是一組用於完成特定資料庫功能的sql語句集,該sql語句集經過編譯後儲存在資料庫系統中。在使用時候,使用者通過指定已經定義的儲存過程名字並給出相應的儲存過程引數來呼叫並執行它,從而完成乙個或一系列的資料庫操作。

二:建立

oracle儲存過程包含三部分:過程宣告,執行過程部分,儲存過程異常

(1)無參儲存過程語法

create or replace procedure noparpro       

as

--宣告語句段,區域性變數,游標的宣告等等。

;

begin

-- 執行語句段,具體業務邏輯。

;

exception

--儲存過程異常處理語段。

;

end;

(2)帶參儲存過程例項

create or replace procedure queryempname(sfindno emp.empno%type)       

as

sname emp.ename%type; -- 自定義欄位名 表名.欄位名%type

sjob emp.job%type;

begin

....

exception

....

end;

(3)帶引數儲存過程含賦值方式

create or replace procedure runbyparmeters   (isal in emp.sal%type,            

sname out varchar,

sjob in out varchar)

--(自定義引數名 in/out 表名.欄位名%type)可以0-任意多個;in表示輸入引數out表示返回值引數

as

icount number; --可以給字段型別自定

begin

select count(*) into icount from emp where sal>isal and job=sjob;

if icount=1 then

....

else

....

end if;

exception

when too_many_rows then --oracle儲存過程中要用到的標量等

dbms_output.put_line('返回值多於1行');

when others then

dbms_output.put_line('在runbyparmeters過程**錯!');

end;

(1)編譯

alter procedure 儲存過程名 compile;

(2)檢視

select * from all_source t 

where t.type = 'procedure'

and t.name = upper('儲存過程名')

order by t.line;

(1)如果是命令視窗就用exec 儲存過程名:

exec  procedure;    --procedure是儲存過程名

(2)如果是pl/sql視窗就用 begin  儲存過程名  end:

begin          

procedure; --procedure是儲存過程名

end;

(3)如果是程式中呼叫就用 call 儲存過程名:

hibernatedao.excutesqlupdate("");    //儲存過程proc_stuinfo

drop procedure 儲存過程名;

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