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返回的個數一樣...