Oracle PL / SQL变量值
常量
要声明常量,请在类型说明符之前放入关键字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 . com
DECLARE
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 m
DECLARE
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;
/