您好,登錄后才能下訂單哦!
一、變量的作用
PL/SQL既然是編程語言,就必然會用到變量。和其他程序語言類似,PL/SQL中的變量主要有以下作用:1. 用來臨時的存放數(shù)據(jù);2.用來操作數(shù)據(jù);3. 重復使用數(shù)據(jù)。
例如上一節(jié)中舉的例子,就用到了變量:
DECLARE
v_fnameVARCHAR2(20);
-- 聲明變量
BEGIN
SELECT first_name
INTO v_fname
-- 將SELECT語句查詢到的數(shù)據(jù)存放到變量v_fname中
FROM employees
WHERE employee_id = 100;
DBMS_OUTPUT.PUT_LINE('The result is ' || v_fname);
-- 使用存放在變量v_fname中的數(shù)據(jù)
END;
二、變量的命名規(guī)則
PL/SQL中命名規(guī)則主要有:
1. 必須以字母開頭;
2. 可以包含字母和數(shù)字;
3. 可以包含特殊字符,如$, _和#。注意, _可以使用,但$和#最好盡量不用,因為在其他編程語言中很少允許使用$和#,為了養(yǎng)成良好的編程習慣,最好不要使用這兩個符號;
4. 變量的長度最好不要超過30個字符;
5. 不能使用關(guān)鍵字和保留字。
三、變量的使用方法
PL/SQL中變量的用法如下:
1. 變量需要在DECLARE部分定義;變量可以在DECLARE部分初始化,也可以不初始化,視程序需要而定。
2. 在執(zhí)行部分,即BEGIN部分賦新值和使用;
3. 可以作為參數(shù)用在子程序中;
4. 也可以用來存放程序的輸出結(jié)果。
下面來結(jié)合之前用到的例子,演示變量的用法:
SQL> edit
DECLARE v_fname VARCHAR2(20); --聲明了變量v_fname,但沒有初始化 BEGIN SELECT first_name INTO v_fname -- 變量v_fnam 用來存放SELECT語句的查詢結(jié)果 FROM employees WHERE employee_id = 100; DBMS_OUTPUT.PUT_LINE('Theresult is ' || v_fname); -- 變量v_fnam作為參數(shù)被傳遞到方法中 END; /
The result is Steven PL/SQL procedure successfullycompleted.
四、聲明和初始化變量
變量需要聲明,初始化則可以在聲明時進行,也可以不在此時進行,但是如果聲明時定義為not null的情況下,就必須初始化才能使用。
變量聲明的格式為:
Identifier [CONSTANT]datatype [NOT NULL] [ := | DEFAULT expression ]
這里中括號中的內(nèi)容都是可選項,具體含義如下:
1. CONSTANT表示常量,一旦定義為常量,則不能在為該變量賦其他的值了;
2. 如果定義了[NOT NULL],則該變量必須賦值;
3. PL/SQL中賦值使用的是 :=,初始化時也可以使用DEFAULT來定義默認值。
來看幾個具體的例子:
DECLARE v_hiredate DATA; --此處只聲明沒有初始化 v_deptno NUMBER(2) NOT NULL := 10; -- 聲明時定義為 NOT NULL,所以必須為其初始化,賦值為10,也可以寫成 -- v_deptno NUMBER(2) NOT NULL DEFUALT 10; v_location VARCHAR2(13) := ‘a(chǎn)tlanta’ -- 聲明的的同時也初始化 c_comm CONSTANT NUMBER := 1400; --聲明時定義為常量,意味著以后不能再為其賦其他的值了
下面來看兩個例子:
例1.
SQL> DECLARE
v_myName VARCHAR(20); -- 只聲明,沒有初始化 BEGIN DBMS_OUTPUT.PUT_LINE('My name is: ' || v_myName); -- 使用的是未初始化的變量v_myName v_myName := 'John'; -- 為變量v_myName 賦值 DBMS_OUTPUT.PUT_LINE('My name is: ' || v_myName); -- 使用的是賦值后的變量 END;
SQL> /
Myname is: -- 由于沒有初始化,故沒有結(jié)果 Myname is: John -- 賦值后使用變量,能顯示該變量的值 PL/SQLprocedure successfully completed.
例2.
SQL>
DECLARE v_myName VARCHAR2(20) := 'John'; -- 聲明變量的同時為其初始化 BEGIN DBMS_OUTPUT.PUT_LINE('My name is: ' || v_myname); -- 注意,這里故意將變量寫成小寫,以驗證PL/SQL中不區(qū)分大小寫 END; /
Myname is: John PL/SQLprocedure successfully completed.
五、字符串分隔符
在打印輸出結(jié)果時經(jīng)常會用到引號,但是單引號’有時候也作為分割符使用,如I’m這種情況,為了避免混淆,PL/SQL中使用了q來進行分隔符的引用:q表示quotes,加上單引號‘,后面接任意成對的符號,都可以起到引用的單引號作用。看下面這個例子:
SQL> edit
DECLARE v_event VARCHAR2(15); BEGIN v_event := q'!Father's day!'; -- 這里使用q’,然后加上成對的!,就可以避免把分隔符’當成單引號 DBMS_OUTPUT.PUT_LINE('3rd Sunday in June is :' || v_event); v_event := q'[Mother's day]'; -- 成對的特殊符號都可以,這里使用的是一對中括號[] DBMS_OUTPUT.PUT_LINE('2nd Sunday in May is :' || v_event); END;
SQL> /
3rdSunday in June is :Father's day 2ndSunday in May is :Mother's day PL/SQLprocedure successfully completed.
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。