ORACLE 儲存寫儲存過程總結

2021-09-20 03:08:34 字數 2134 閱讀 5007

step01 需要建立乙個package;

例如:create or replace package package_name is

end package_name ;
這一步只是建立乙個package。

step02: 為建立好的package建立包體

例如:create or replace package body package_name is

end package_name ;
step03: 開始建立儲存過程,在上面的包體裡面寫。

create or replace package body package_name is

procdure pro_1 as

– 宣告變數–

begin

–這裡寫過程的內容

end pro_1 ;

end package_name ;

過程中遇到的一些細節—

1 給表中插入資料時,先清除表中的內容:execute immediate 『truncte table table_name drop storage』

按欄位_1的取值來清空: execute immediate 'truncte table table_name where 欄位_1 = 』 || 給定條件 『drop storage』

按照分割槽來清空: execute immediate 『alter table table_name tuncate partition 分割槽名 drop storage』

2 2_1.自定義陣列格式

eg:type type_array is table of varchar(20) index by binary_integer;

其中,『type』表示宣告,'type_array' 為自定義的陣列型別名稱
『varchar(20)』是陣列元素的型別,

『index by binary_integer』表示陣列內的索引

2_
2.宣告陣列

使用上面自定義的陣列型別,開始宣告乙個陣列變數

eg:m_array type_array;

2_
3.查詢結果並賦值給該陣列

eg:select equid bulk collect into m_array from tb_equipment;

第二個關鍵字段,表示把結果封裝成集合賦值給陣列。

2_4.接著就可以使用for迴圈遍歷陣列了

eg:for i in 1…m_array.count loop

...

end loop;

3 變數的命名

3_1、直接法

:=如:v_flag := 0;

3_2、select into

如:假設變數名為v_flag,select count(*) into v_flag from students;

3_3、execute immediate 變數名(一般是sql的select語句) into 變數名

如:v_sqlfalg   := 'select count(*) from user_tables where table_name='''||v_tablename || '''';

execute immediate v_sqlfalg into v_flag;

其中,v_tablename也是變數

當然2和3實質是一樣的。只不過3中的select語句是根據變數生成的。

原文:4 變數的宣告

4-1 宣告乙個number型別的變數n_num: n_num number;

4-2 宣告乙個和某張表中某個字段同一型別的變數

eg: tmp_ym table_namex.ym%type;

4-3 如果宣告乙個變數和表中的一條記錄型別相同: tmp_row table_namex%rowtype;

給tmp_row 的各個字段進行賦值的方式: tmp_row.欄位1 := 『***xx』

如果宣告乙個臨時變數供迴圈中使用,應指明該變數的型別。

5 在儲存過程中呼叫其他過程:

包名.過程名(引數)

oracle如何寫儲存過程

create or replace procedure p name 儲存過程名字 i var in int,輸入引數1 o var out varchar2 輸出引數1 is v str varchar2 200 定義儲存過程內部的區域性變數 begin 下面是儲存過程的主體實現部分 v str ...

oracle 儲存過程語句總結

1 exit when迴圈 create or replace procedure proc test exit when is i number begin i 0 loop exit when i 5 dbms output.put line i i i 1 end loop end proc ...

Oracle儲存過程呼叫儲存過程

oracle儲存過程呼叫有返回結果集的儲存過程一般用光標的方式,宣告乙個游標,把結果集放到游標裡面,然後迴圈游標 declare newcs sys refcursor cs1 number cs2 number cstype table rowtype table列的個數和newcs返回的個數一樣...