PL/SQL儲存過程操作例項及其講解說明
阿新 • • 發佈:2018-12-26
建立過程
過程使用CREATE OR REPLACE PROCEDURE語句建立,使用CREATE OR REPLACE PROCEDURE語句簡化語法如下:
CREATE[OR REPLACE]PROCEDURE procedure_name
[(parameter_name [IN| OUT |IN OUT] type [,...])]{IS|AS}BEGIN< procedure_body >END procedure_name;
這裡,
procedure-name 指定的程式的名稱
[OR REPLACE] 選項允許修改現有的程式
可選的引數列表中包含的名稱,模式和型別的引數。IN表示該值將被從外部傳遞,OUT表示該引數將被用於從過程返回一個值到外面
procedure-body 包含可執行部分
AS關鍵字來代替了IS關鍵字用於建立一個獨立的程式。
視窗截圖:
該儲存過程是查詢陣列中最大值,並輸出,輸入引數int_varray是建立的整型陣列,建立語法如下:
create or replace type int_varray as table of int;
int_varray建立成功截圖:
單獨的儲存過程例項原始碼:
-- Created on 2018/3/29 by E.WANG /* 過程使用CREATE OR REPLACE PROCEDURE語句建立,使用CREATE OR REPLACE PROCEDURE語句簡化語法如下: CREATE [OR REPLACE] PROCEDURE procedure_name [(parameter_name [IN | OUT | IN OUT] type [, ...])] {IS | AS} BEGIN < procedure_body > END procedure_name; 這裡: procedure-name 指定的程式的名稱 [OR REPLACE] 選項允許修改現有的程式 可選的引數列表中包含的名稱,模式和型別的引數。 IN表示該值將被從外部傳遞,OUT表示該引數將被用於從過程返回一個值到外面。 procedure-body 包含可執行部分 AS關鍵字來代替了IS關鍵字用於建立一個獨立的程式。 */ --求陣列中的最大值並輸出 create or replace procedure MaxOfVarray(valueList in int_varray,z out int) as tmpResult int:=0; begin for x in 1..valueList.count loop if valueList(x)>=tmpResult then tmpResult:=valueList(x); end if; end loop; z:=tmpResult; end;
宣告並呼叫儲存過程例項原始碼:
-- Created on 2018/3/29 by E.WANG /* 在Oracle的儲存過程和函式中,其實IS和AS是同義詞,沒有什麼區別。 還有在自定義型別(TPYE)和包(PACKAGE)時,使用IS和AS也並沒有什麼區別。 但是在建立檢視(VIEW)時,只能使用AS而不能使用IS。 在宣告遊標(CURSOR)時,只能使用IS而不能使用AS。 */ declare one int; two int; three int; --定義一個整型陣列 numlist int_varray; --宣告並定義儲存過程MaxOfTwo --找出兩個數中的最值並輸出該值 procedure MaxOfTwo(x in int,y in int,z out int) as begin if x>y then z:=x; else z:=y; end if; end; begin numlist:=int_varray(12,2,56,75,24); --呼叫儲存過程MaxOfVarray MaxOfVarray(numlist,three); dbms_output.put_line('The max of int_varray(12,2,56,75,24): '|| three); --給變數one、two、three賦值 one:=10; two:=20; --呼叫儲存過程MaxOfTwo MaxOfTwo(one,two,three); dbms_output.put_line('The max of (10,20): '|| three); end;