首頁  >  文章  >  資料庫  >  oracle預存程​​序的實例

oracle預存程​​序的實例

WBOY
WBOY原創
2023-05-11 11:13:062180瀏覽

預存程序是一種預先編譯的資料庫程序,包含一組SQL語句和控制語句,可以在需要時被呼叫。本文將介紹Oracle資料庫預存程序的基礎知識與實例。

一、預存程序基礎

1.1 預存程序的優勢

預存程序是一種提升資料庫效能的有效方法。它們提高了應用程式與資料庫互動的效率,因為在資料庫端預先編譯了SQL語句,使其在呼叫時更快速地完成操作。還可以增加資料的安全性,因為預存程序可以在資料庫建立和修改資料之前進行權限檢查。

1.2 預存程序的建立

可以使用Oracle SQL開發工具來建立預存程序。 Oracle SQL Developer和SQL Plus都是常用的工具。

以下是建立預存程序的基本語法:

##CREATE [OR REPLACE] PROCEDURE procedure_name

([parameter_name IN/OUT datatype [, parameter_name IN/OUT datatype …]])
IS
BEGIN
statement(s);
EXCEPTION
exception_handler;
END;

其中,參數是可選的,'[OR REPLACE]'命令可以指定應用程式必須存在和保留預存程序的狀態。

1.3 預存程序的輸入輸出參數

預存程序可以接受輸入參數和輸出參數。輸入參數可用於在預存程序中執行條件操作或將資料傳遞給預存程序。輸出參數用於傳回值或輸出過程中的指定值等資訊。

以下是一些參數的互動方式:

IN: 輸入參數用於將值傳遞給預存程序。

OUT: 輸出參數不用於輸入數據,但可以透過預存程序傳回值。

INOUT: 輸入/輸出參數允許傳遞一個值作為參數,並能透過該預存程序的執行傳回值進行變更。

1.4 預存程序的異常處理

預存程序可以像函數一樣處理異常。當預存程序出現錯誤時,可以設定一個異常處理。它可以實現自訂錯誤訊息的管理,以及出現錯誤時用指定行為向外提交這些錯誤。

以下是建立例外處理的基本語法:

DECLARE

exception_name EXCEPTION;
PRAGMA EXCEPTION_INIT (exception_name, error_code);
BEGIN
statement(s) ;
EXCEPTION

  WHEN exception_name THEN
     statement(s);

END;

二、預存程序實例

以下是一些常見的預存程序實例:

2.1 預存程序的簡單查詢

以下是一個簡單的預存程序範例,它將會輸出表中符合條件的資料:

CREATE OR REPLACE PROCEDURE get_emp_data

(
ID IN NUMBER,
NAME OUT VARCHAR2,
SALARY OUT NUMBER
)
IS
BEGIN
SELECT employee_name,salary INTO NAME,SALARY FROM employees WHERE employee_id =# ID
END;
#上述預存程序實例需要傳入2個參數:ID是必須的輸入參數,它定義了要查詢資訊的員工ID;而名字和薪資則是輸出參數,分別接受查詢結果中對應列的值。

取回預存程序輸出參數的值,可以像函數一樣呼叫儲存程序:

DECLARE

emp_name VARCHAR2(20);

emp_salary NUMBER(10,2);
BEGIN
get_emp_data (100,emp_name,emp_salary);
DBMS_OUTPUT.PUT_LINE('Name: ' || emp_name);
DBMS_OUTPUT.PUT_LINE('Salary: ' || emp_salary);
END;

在上述程式碼中,將預存程序參數ID設為100,因此會傳回該員工的名字和工資。

2.2 預存程序的插入操作

以下是一個預存程序範例,它實作將一行資料插入指定員工名冊的功能:

CREATE OR REPLACE PROCEDURE add_employee

(

ID IN NUMBER,
NAME IN VARCHAR2,
AGE IN NUMBER,
SALARY IN NUMBER
)
IS
BEGIN
INSERT INTO employees VALUES ( ID,NAME,AGE,SALARY);
COMMIT;
DBMS_OUTPUT.PUT_LINE('Employee added.');
EXCEPTION
WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE('Error adding employee.');

END;

上述預存程序實例需要4個輸入參數:員工ID、員工姓名、員工年齡和員工薪資,然後插入到"employees"表中。當插入成功後將會提示"employee added"訊息,而插入失敗時則會提示"Error adding employee"訊息。

2.3 預存程序的更新操作

以下範例提供了將員工表中指定ID的員工薪資增加10%的功能:

CREATE OR REPLACE PROCEDURE increase_employee_salary

(

ID IN NUMBER
)
IS
CURSOR c_employee_salary IS

SELECT salary FROM employees WHERE employee_id = ID;

v_employee_salary NUMBER;

BEGIN

OPEN c_employee_salary;
FETCH c_##BEGIN
OPEN c_employee_salary;#empee_FETCH c_employee_salary c_TO.
v_employee_salary := v_employee_salary * 1.1;
UPDATE employees SET salary = v_employee_salary WHERE employee_id = ID;
COMMIT;
# DBMS_OUTPUT.PUT_f.PUT.PUT_#. WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.PUT_LINE('Employee not found.');

WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error increasing salary.');

END;

上述預存程序範例需要1個輸入參數:員工ID,它根據員工ID取得員工的薪資,將其乘以1.1並更新到表中。正確更新後,提示"salary increased"訊息;當找不到員工時,提示"employee not found"訊息;當其他錯誤時,提示"error increasing salary"訊息。

總結

在本文中,我們介紹了Oracle資料庫預存程序的基礎知識和一些實例。預存程序可以提高資料庫效能和資料安全,對於需要經常執行的任務,預存程序非常有用。透過一些實例,你可以更好地理解如何建立和使用Oracle預存程​​序。

以上是oracle預存程​​序的實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:oracle連線失敗下一篇:oracle連線失敗