Oracle資料庫之儲存過程

2021-08-21 13:18:42 字數 1595 閱讀 6724

目錄

程式單元

儲存過程由來

即為程式單元,相當於其他高階程式語言中的函式或者子過程,具體的可以分為儲存過程、函式、包和觸發器4種。

很多複雜的sql塊只能使用一次且不會被儲存在資料庫中;

使用時,在乙個儲存過程中呼叫另外乙個儲存過程主要是出於**重用的目的。

儲存過程(procedure)用於在資料庫種完成特定的操作或者任務,pl/sql中使用ddl指令create procedure建立或覆蓋定義儲存過程,語法:

create[or replace] procedure [形參1,形參2...]  // 外界傳入的形參

is as[本地變數宣告] //本地變數的宣告

begin

《執行語句》//執行的sql**塊

[exception 《異常處理**》]

end;

如果在儲存過程建立過程中系統提示出現編譯錯誤,可使用show errors指令檢視詳細的錯誤提示資訊,

eg: sql>show errors;

儲存過程的呼叫:

execute ;

或者exec

刪除儲存過程 drop procedure ;

儲存過程中引數型別及預設值

與高階程式語言中函式的形參類似,pl/sql儲存過程借助於過程引數實現與呼叫環境之間的資料傳遞,二者的差別在於,高階程式語言中的函式形參都是單向傳遞資料的(函式僅用於接收從外界呼叫環境傳入的資料,再通過函式返回值江處理結果返回/輸出到呼叫環境),而sql儲存過程的引數卻分別是in、out、in out 3中模式。

in引數:(預設為in模式)

用於在過程被呼叫時接收外界(呼叫環境)傳遞進來的資料值,相當於傳統的形參。

注意:in模式引數被作為以賦值的常量對待,因而不可以在過程體中再對其進行賦值操作。

out引數:

用於在過程執行完畢時將處理結果返回給呼叫環境,out引數相當於未賦值的變數,因要在過程執行結束時將其返回值返回給呼叫者,故必須在過程體**執行過程中為out模式引數賦值。此外,呼叫過程時與out模式引數相對應的實參必須是變數(無論賦值與否),否則,使用常量或表示式的話,將因無法儲存返回值而出錯。

in out引數:

是in模式和out模式的結合,一般不建議使用。

--------建立過程

create or replace procedure mp4(v_name in varchar,v_age out number)

as begin

select age into v_age from mytable where name=v_name;

end;

---------呼叫過程:

declare

v1 number;

begin

mp4('tom',v1);

update mytable set age=(v1+2 2) where name ='tom';

end;

Oracle資料庫儲存過程

建立語句 create or replace procedure 儲存過程名 儲存過程名定義 包括儲存過程名和引數列表。引數名和引數型別。引數名不能重複,引數傳遞方式 in,out,in out in 表示輸入引數,按值傳遞方式。out 表示輸出引數,可以理解為按引用傳遞方式。可以作為儲存過程的輸出...

oracle資料庫 儲存過程

儲存過程 stored procedure 是一組為了完成特定功能的sql 語句集,經編譯後儲存在資料庫中。使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執行它。儲存過程是資料庫中的乙個重要物件,任何乙個設計良好的資料庫應用程式都應該用到儲存過程。儲存過程是由流控制和sql 語句...

資料庫之儲存過程

資料庫物件包括 表 索引 規圖 儲存過秳 觸發器 儲存過秳是資料庫重要的物件。是一組為了完成特定功能的sql詢句集。作用是 1.儲存過秳是在創造進行編譯的。之後每次執行儲存過程不需要重新編譯,而一般sql詢句需要每執行一次就編譯一次。2.當對資料庫迕行複雜操作時 如對多個表進行update,inse...