一、存盤程序簡介
? 存盤程序(Stored Procedure)是一組為了完成特定功能的PL/SQL陳述句塊,經編譯后存盤在資料庫中,
? 存盤程序經編譯和SQL優化后存盤在資料庫服務器中,使用時只要呼叫即可,
? 存盤程序是資料庫中的一個重要物件,任何一個設計良好的資料庫應用程式都應該用到存盤程序,
? 用戶通過指定存盤程序的名字給出引數(如果該存盤程序帶有引數)來執行它,
二、存盤程序分類
1)系統存盤程序
? 系統存盤程序就是由Oracle預先提供的一組完成特定功能的存盤程序,安裝完Oracle就有了,
2)自定義存盤程序
? 自定義存盤程序就是存在Oracle資料庫里由一組PL/SQL陳述句組成的自定義程序(Procedure),它可以供其它Oracle自定義存盤程序、自定義函式和Job呼叫或者由客戶端程式呼叫,
三、存盤程序語法
? 定義存盤程序的語法:
CREATE [OR REPLACE] PROCEDURE 存盤程序名
[(引數名1 [引數模式] 引數資料型別1,引數名2 [引數模式] 引數資料型別2)]
IS [AS]
[變數 [constant] 型別 [默認值]]
BEGIN
PL/SQL 陳述句塊;
END 存盤程序名;
四、無參存盤程序
1)定義無參存盤程序
create or replace procedure PrintToday is begin dbms_output.put_line(sysdate); end;
2)執行無參存盤程序
begin PrintToday(); end;
五、存盤程序引數
? 建立存盤程序時,既可以指定存盤程序的引數,也可以不提供任何引數,
? 存盤程序的引數主要有三種型別:輸入引數(IN)、輸出引數(OUT)、輸入輸出引數(IN OUT),其中IN用于接收呼叫環境的輸入引數,OUT用于輸出資料傳遞到呼叫環境,IN OUT不僅要接收資料,而且要輸出資料到呼叫環境,
? 在建立存盤程序時,輸入引數的IN可以省略,
? 注意:當定義存盤程序的引數時,只能指定資料型別,不能指定資料長度,
六、有參存盤程序
6.1、帶輸入引數存盤程序
1)定義帶輸入引數存盤程序
create or replace procedure InsertEmp ( p_empno varchar2, p_ename varchar2 ) is begin insert into emp (empno,ename) values (p_empno,p_ename); commit; end;
2)執行帶輸入引數存盤程序
begin InsertEmp ('1004','Green'); end;
6.2、帶輸出引數存盤程序
1)定義帶輸出引數存盤程序
create or replace procedure CountEmp ( p_ename in varchar2, out_value out number ) is begin select count(1) into out_value from emp where ename=p_ename; end;
2)執行帶輸出引數存盤程序
declare out_value number; begin CountEmp ('James',out_value); dbms_output.put_line(out_value); end;
七、維護存盤程序
? 修改存盤程序
? 與創建的語法相同,使用REPLACE替換即可,
? 洗掉存盤程序
? drop procedure [schema.]程序名
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/499132.html
標籤:Oracle
