常量
要聲明常量,請在類型說明符之前放入關鍵字CONSTANT。
常量必須在其聲明中初始化。
每次輸入塊或子程序時,都會初始化常量。
以下代碼顯示如何定義REAL類型的常量,并為常量指定一個不可更改的值5。
DECLARE n_real CONSTANT REAL := 5.00; n_value CONSTANT INTEGER := 3; n_boolean CONSTANT BOOLEAN := FALSE;
BEGIN NULL;
END;
/
DEFAULT
我們可以使用關鍵字DEFAULT
而不是賦值運算符來初始化變量。
可以使用DEFAULT在用戶定義的記錄中初始化子程序參數,光標參數和字段。
對具有典型值的變量使用DEFAULT。對沒有典型值的變量使用賦值運算符。
DECLARE n_char CHAR DEFAULT 'O'; -- Same as n_char CHAR := 'O'; n_length INTEGER DEFAULT 40; -- Typical value n_count INTEGER := 0; -- No typical value BEGIN NULL;
END;
/
NOT NULL
聲明可以施加NOT NULL約束。
NOT NULL防止您為該變量分配一個空值。
指定NOT NULL的聲明必須指定默認值。
DECLARE i_id INTEGER(4) NOT NULL := 9999;
BEGIN NULL;
END;
/
%TYPE
我們可以使用%TYPE來聲明表列類型的變量
CREATE TABLE EMP ( empid NUMBER(6) NOT NULL PRIMARY KEY, deptid NUMBER(6) CONSTRAINT c_EMP_deptid CHECK (deptid BETWEEN 100 AND 200), deptname VARCHAR2(30) DEFAULT 'Sales'
); -- from w w w . ja va 2 s . comDECLARE v_empid EMP.empid%TYPE; v_deptid EMP.deptid%TYPE; v_deptname EMP.deptname%TYPE;
BEGIN v_empid := NULL; v_deptid := 50; DBMS_OUTPUT.PUT_LINE ('v_deptname: ' || v_deptname);
END;
/
%ROWTYPE屬性
%ROWTYPE屬性聲明表示表中某一行的記錄。
要引用記錄中的字段,請使用record_name.field_name
。
記錄字段不繼承相應列的約束或默認值。
如果引用的項表更改,您的聲明將自動更新。
CREATE TABLE EMP ( empid NUMBER(6) NOT NULL PRIMARY KEY, deptid NUMBER(6) CONSTRAINT c_EMP_deptid CHECK (deptid BETWEEN 100 AND 200), deptname VARCHAR2(30) DEFAULT 'Sales'
); -- ww w. j a va2 s. co mDECLARE emprec EMP%ROWTYPE;
BEGIN emprec.empid := NULL; emprec.deptid := 50; DBMS_OUTPUT.PUT_LINE ('emprec.deptname: ' || emprec.deptname);
END;
/
以下代碼顯示了如何聲明一個表示表列子集的記錄。
DECLARE CURSOR c1 IS SELECT id, name FROM departments; dept_rec c1%ROWTYPE; -- includes subset of columns in table
BEGIN NULL;
END;
/
以下代碼顯示如何從聯接聲明一個表示行的記錄。
DECLARE CURSOR c2 IS SELECT employee_id, email, employees.manager_id, location_id FROM employees, departments; join_rec c2%ROWTYPE; -- includes columns from two tables BEGIN NULL;
END;
/