PLSQL的變量

PLSQL的變量類型:

1、系統內置的常規簡單變量類型: 比如大多數 數據庫表的字段類型都可以作爲變量類型;

2、用戶自定義複雜變量類型: 比如記錄類型;

3、引用類型:保存了一個指針值; 4、大對象類型( LOB):保存了一個指向大對象的地址;

PLSQL的變量聲明:

DECLARE v_hiredate DATE;

v_deptno NUMBER(2) NOT NULL := 10;

v_location VARCHAR2(13) := 'Atlanta';

c_comm CONSTANT NUMBER := 1400;

變量聲明的規則:(變量名 變量類型 變量約束 :=初始值)

1 一般建議每一行聲明一個變量,這樣程序的可讀性比較好;

2 如果聲明瞭變量,但未進行初始化,則在沒有賦值之前該變量的值爲NULL; 一個好的編程習慣是對所有聲明 的變量進行初始化賦值。

3、在同一個塊中,避免命名與數據庫表中的字段名相同的變量;

例如:

DECLARE employee_id NUMBER(6);

BEGIN

SELECT employee_id

INTO employee_id

FROM employees

WHERE last_name = 'Kochhar';

END;

這是個反面教材,合理的變量命名應該爲:v_employee_id

 

PLSQL特有的%TYPE屬性來聲明與XX類型一致的變量類型:

v_name employees.last_name%TYPE; (此變量類型與employees表的last_name列的類型一致)

v_min_balance v_balance%TYPE := 10; (此變量類型與變量v_balance的類型一致)

 

可綁定變量(Bind Variable 也稱爲Host Variable , 非PLSQL 變量)

可綁定變量是一種在縮主環境中定義的變量,所謂縮主環境一般指示SQLPLUS執行環境或者是 PLSQL Developer 的Command Window執行環境;可綁定變量可用於在運行時把值傳遞給PLSQL

例如:

VARIABLE g_salary NUMBER

BEGIN

SELECT salary

INTO :g_salary

FROM employees

WHERE employee_id = 178;

END;

/

PRINT g_salary;

注意:

1.在標準的PLSQL中定義變量是不能用VARIABLE關鍵字的,此關鍵字只在SQLPLUS執行環境中有效, 可使用PRINT語句輸出變量內容。

2.在PLSQL中使用這種變量時,前面加”:”, 以示區分。

 

DBMS_OUTPUT.PUT_LINE()介紹

在接下來的實驗中,經常需要在調試程序時輸出中間變量的值

DECLARE

v_sal NUMBER(9,2) := &p_annual_sal;

BEGIN v_sal := v_sal/12;

DBMS_OUTPUT.PUT_LINE ('The monthly salary is ' || TO_CHAR(v_sal));

END;

解釋: &p_annual_sal 在Plsql Developer的SQL window 執行環境中,可用於提示用戶輸入一個具體 的值。

注意:在SQLPLUS中執行 DBMS_OUTPUT.PUT_LINE () 前,必須先執行: SET SERVEROUTPUT ON ,而在PLSQL Developer的SQL Window中則不需要這句話。

 

PL/SQL的註釋:

多行註釋:/* */

單行註釋:--

 

大多數SQL函數都可以在 PLSQL的過程語句中使用,比如:

單行的數值和字符串函數、數據類型轉換函數、日期函數、時間函數、求最大、最小值的 GREATEST, LEAST 函數等;

但有些函數在PLSQL的過程語句中是不能使用的,比如:

Decode函數、分組函數(AVG, MIN, MAX, COUNT, SUM, STDDEV, and VARIANCE)等;

塊嵌套和變量範圍:

PLSQL的塊是可以嵌套的,變量的作用範圍與其他語言類似 (外層的變量只能用在所嵌套的塊裏和自己所屬的塊內)

 

變量限定詞(outer):

假設我們在塊嵌套的程序中,裏層和外層有相同的變量聲明,而裏層的程序要訪問外層的同名變量,則使用塊限定詞。

例如:

begin ————————當用了限定詞outer後,最外層也要加一套begin.......end

<<outer>>

DECLARE birthdate DATE;

BEGIN

DECLARE

birthdate DATE;

BEGIN ...

outer.birthdate :=

TO_DATE('03-AUG-1976',

'DD-MON-YYYY');

END;

END;

end;

這個例子中,birthdate 是同名變量,限定詞 outer 表示外層,裏層要訪問外層的bithdate時使用 outer.birthdate 這種格式

 

——操作:選中欲美化的代碼,點上面的 “PL/SQL Beautifier”按鈕即可,注意有時代碼有語法錯誤的時候該功能 無效,所以最好先編譯通過再美化;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章