END; SQL> /
Theresult is 101
PL/SQLprocedure successfully completed.
其中变量名和列名重合了,虽然有时候可以运行,但无法保证结果正确。
7. 如果constraint定义为NOT NULL,则声明时必须为其赋初值。 三、各类型变量详解
1. Scalar Variable标量
Scalar变量是使用最广泛的一种变量,它只包含单一的值,内部没有更复杂的结构,例如:
TRUE——Boolean;
25-JAN-01——Date;
256120.08——Number;
“Atlanta”——String;
“The Soul ofthe lazy man desires, and he has nothing; but the soul of the diligent shall bemade rich.”——String(如果该值不长,比如CHAR或VARCHAR通常最多可存储2000到4000个字符,则可以作为字符串,否则最好作为CLOB类型,即无结构文档);
常见的Scalar变量主要有以下几种:
CHAR [(maximum_length)] ——长度不可变
VARCHAR (maximum_length) ——长度可变
NUMBER [(precision,scale)]
BINARY_INTEGER
BINARY_FLOAT
BINARY_DOUBLE
PLS_INTEGER
BOOLEAN
DATE
--------------以下几类在内部其实都存储为数字-----
TIMESTAMP
TIMESTAMP WITH TIME ZONE
TIMESTAMP WITH LOCAL TIME ZONE
INTERVAL YEAR TO MONTH
INTERVAL DAY TO SECOND
下这个例子演示了如何定义Scalar变量:
DECLARE
v_emp_job VARCHAR2(9)
Kimberely Grant
如果设置autoprint为打开状态,则可以将结果自动打印到屏幕上 SQL> VARIABLE b_emp_salary NUMBER SQL> SET AUTOPRINT ON # 设置自动打印功能 SQL> edit
1 DECLARE
2 v_empno NUMBER(6) :=&empno;
3 BEGIN
4 SELECT salary
5 INTO :b_emp_salary
6 FROM employees
7 WHERE employee_id = v_empno;
8 END;
9 /
Entervalue for empno: 178
old 2: v_empno NUMBER(6) :=&empno;
new 2: v_empno NUMBER(6) :=178;
PL/SQLprocedure successfully completed.
B_EMP_SALARY
------------
7000 3. LOB Large Object 数据类型
LOB类型的数据主要有以下几种:
A. CLOB——用来存放字符串;
B. BLOB——用来存放二进制文件,如图片等;
C. BFILE——因为这类文件体积很大,故存放在磁盘上,而数据库中存放的只是指针,而不是文件本身,它的访问速度可能会比BLOB更快
D. NCLOB——用来存放一些非英文字母的文字
4. Composite 复合变量
复合型变量中可以存放多种其他类型的变量,如RECORD, AREA,TABLE等类型的变量,其中还可以存放布尔型、日期型、字符型、LOB型的其他变量。