oracle中的procedure編寫和使用詳解
1.創(chuàng)建/修改
CREATE [OR REPLACE] PROCEDURE procedure_name [(parameter_list)] {IS|AS} [local_declarations] BEGIN executable_statements [EXCEPTION exception_handlers] END [procedure_name];
a.parameter_list格式如下
parameter_name1 [in | out | in out] type, parameter_name1 [in | out] type [,........]
in 是輸入?yún)?shù), 可以有默認值,默認值例子 emp_no in number:=7900
out 是輸出參數(shù),
b.AS/IS的區(qū)別
在視圖(VIEW)中只能用AS不能用IS
在游標(CURSOR)中只能用IS不能用AS
c.local_declarations格式如下:
loacal_var1 type(limit);
如empname varchar2(20);
d.輸出變量賦值
oracle 變量賦值有兩種一種是直接 := 還有就是 select into
游標參數(shù)
outcur OUT BASIC_CURSOR: OPEN outcur FOR SELECT col1,col2 FROM tablename
e.示例
create or replace procedure putNum(P_Date in date, P_year out varchar2) is v_num number(8) := 1; v_days number; v_date date; begin dbms_output.put_line('intput value:' || P_year); v_num := 1; v_days := 1; v_days := to_number(to_char(P_Date, 'dd')); -- to_char(sysdate-20,'dd') for i in 1 .. v_days Loop v_date := to_date('2011/11/' || to_char(i), 'yyyy/MM/dd'); --dbms_output.put_line(v_date); end loop; P_year := '2012'; end;
2.調用
[EXECUTE]|[CALL] procedure_name[(parameter,…n)]
在代碼塊 declare 的 begin/end 中不需要 [EXECUTE]|[CALL], 直接 procedure_name[(parameter,…n)]
其他外部程序需要 [EXECUTE]|[CALL]
在PL/SQL中調用這個存儲過程,采用了如下的代碼:
begin Proc_Insert('hello6',25,'2005-12-24'); commit; end;
3.顯示調試信息
a.存儲過程中在必要的位置添加
DBMS_OUTPUT.put_line ('Hello World!');
b.打開DBMS_OUTPUT
show serveroutput; set serveroutput on;
c.測試我們的 procedure
exec procedure_name
3.顯示錯誤 show errors
如果在 exec 存儲過程中提示出現(xiàn)錯誤,時刻使用"show errors"命令查看哪里出錯了
4.查看
a.所有 procedure
select object_name,object_type,status from user_objects where OBJECT_TYPE='PROCEDURE';
b.指定 procedure
SELECT text FROM user_source WHERE NAME = 'procedure_name';
5.刪除
DROP PROCEDURE procedure_name;
以上所述是小編給大家介紹的oracle中的procedure編寫和使用詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關文章
ORA-02298: 無法驗證 (約束)提示未找到父項關鍵字的解決辦法
這篇文章主要介紹了ORA-02298: 無法驗證 (約束)提示未找到父項關鍵字的解決辦法,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下2016-09-09用Oracle9ias開發(fā)無線應用程序開發(fā)者網(wǎng)絡Oracle
用Oracle9ias開發(fā)無線應用程序開發(fā)者網(wǎng)絡Oracle...2007-03-03Oracle 18c新特性-PDB快照輪播(Snapshot Carousel)
Oracle 18c推出的一個新功能就是PDB快照輪播,最多可以創(chuàng)建8個pdb的快照,而這8個構成的一組快照就被稱作快照輪播。這篇文章主要介紹了Oracle 18c新特性-PDB快照輪播(Snapshot Carousel),需要的朋友可以參考下2018-10-10Oracle?Database?23c新特性之關聯(lián)更新和刪除示例詳解
這篇文章主要介紹了Oracle?Database?23c新特性之關聯(lián)更新和刪除的相關資料,Oracle database 23c開始支持在UPDATE和DELETE語句中使用JOIN連接,獲取更新和刪除的數(shù)據(jù)源,本文結合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2023-06-06Oracle百分比分析函數(shù)RATIO_TO_REPORT() OVER()實例詳解
本文通過實例代碼給大家介紹了oracle百分比分析函數(shù)RATIO_TO_REPORT() OVER(),代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08Linux系統(tǒng)下啟動/關閉Oracle數(shù)據(jù)庫
在Linux系統(tǒng)上開啟關閉Oracle數(shù)據(jù)庫是一個常見的任務,可以通過多種方法來實現(xiàn),這篇文章主要給大家介紹了關于Linux系統(tǒng)下啟動/關閉Oracle數(shù)據(jù)庫的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-07-07