pl/sql 是一種強型別的程式語言,所有的變數必須聲明後再使用
,要求在DECLARE部分進行宣告
變數名稱規定:
變數名稱可以有字母,數字 _ $ #等組成
所有的變數名稱要求以字母開頭,不能是oral中的保留字
變數長度小於30個字元
定義變數如果沒有賦值則以NULL作為預設值

    SQL> DECLARE
      2      v_result VARCHAR2(30);
      3  BEGIN
      4      DBMS_OUTPUT.PUT_LINE('V_RESULT = '||v_result);
      5      END;
      6  /
    V_RESULT =
    PL/SQL 過程已成功完成。

所有的變數宣告都在DECALRE中完成
宣告變數的語法
變數名稱 [CONSTANT] 型別 [NOT NULL] [:=value];
CONSTANT:定義常量,必須在宣告是為其賦予預設值
NOT NULL : 表示此變數不允許設定為NULL
:=value:表示在變數聲名時,設定號初始化內容.
定義變數

SQL>   DECLARE
  2             v_resultA NUMBER :=100; --定義一個變數,同時賦值
  3             v_resultB NUMBER; --定義一個變數,沒有設定內容
  4     BEGIN
  5             v_resultB :=30;
  6     DBMS_OUTPUT.PUT_LINE('count = '||(v_resultB +v_resultA));
  7     END;
  8     /
count = 130

PL/SQL 過程已成功完成。

定義非空變數

SQL> DECLARE
  2     v_resultA NUMBER NOT NULL:=100;
  3   BEGIN
  4   	DBMS_OUTPUT.PUT_LINE(v_resultA);
  5   END;
  6   /
100

PL/SQL 過程已成功完成。

使用%TYPE 宣告變數型別
如果希望某一個變數與資料表中的某一列的型別一樣,則可以採用
變數定義 表名稱.欄位名稱%TYPE 的格式 這樣制定的變數就具備了指定欄位相同的型別

SQL> DECLARE
  2     v_eno  emp.empno%TYPE;
  3     v_ename emp.ename%TYPE;
  4  BEGIN
  5     DBMS_OUTPUT.PUT_LINE('請輸入僱員編號');
  6     v_eno :=&empno;
  7     select ename INTO v_ename FROM emp WHERE empno=v_eno;
  8     DBMS_OUTPUT.PUT_LINE('編號為 : '||v_eno||' 姓名 : '||v_ename);
  9     END;
 10     /
輸入 empno 的值:  7369
原值    6:      v_eno :=&empno;
新值    6:      v_eno :=7369;
請輸入僱員編號
編號為 : 7369 姓名 : SMITH

PL/SQL 過程已成功完成。

%ROWTYPE 宣告變數型別
%ROWTYPE 標記,使用該標記可以定義表中一行記錄的型別.

SQL> DECLARE
  2     v_deptRow dept%ROWTYPE;
  3  BEGIN
  4     SELECT *INTO  v_deptRow FROM dept WHERE  deptno=10;
  5     DBMS_OUTPUT.PUT_LINE('編號 : '||v_deptRow.deptno||' 名稱 : '||v_deptRow.dname||', 位置: '||v_deptR
ow.loc);
  6     END;
  7     /
編號 : 10 名稱 : ACCOUNTING, 位置: NEW YORK

PL/SQL 過程已成功完成。