前言:
使用变量可以保存计算机需要处理的数据,为了给该变量分配适当的
内存空间,还需要指定数据类型,有的数据类型还需要指定长度,如字符串。
有
些类型可以用于建表
(
如
char
,有些则不能
(
如
boolean
,
rowtype
。
同样是字符串,
建表时的限制为
4000,
在脚本中则为
3
万多。
简单语法:变量名
数据类型
;
完整语
法:变量名
[constant]
变量类型
[not null] [default
值
| :=
值
]
其中
“[ ]”
表示可以不
写,
“|”
表示任选其一。
下面给出变量定义及解释,数据类型先用建表时所用的数
据类型:
v1 char
:
说明:没有给出长度,所以
v1
只能保存一个字符。超过了则会
出错:数字或值错误
:
字符串缓冲区太小。
v2 varchar2(10;
说明:
v2
最多只能保存
10
个字符。如果不写长度,会出错:字符串长度限制在范围
(1...32767 v3 number;
说明:
v3
保存的数字范围非常大,几乎可以认为是没有限制的。
v4 number(5;
说
明:
v4
最多能够保存
5
位整数。如果有小数,
Oracle
会自动四舍五入。如果整数
部分超过
5
位,则会报错:数字或值错误
:
数值精度太高。
v5 number(5,2;
说明:
v5
最多能够保存
3
位整数
,2
位小数。如果小数位不止
2
位,则
Oracle
会自动四舍
五入。整数位超过
3
位会报错,同上。
v6 date;
说明:可以直接保存
sysdate
的
值;如果是指定日期,则要用
to_date
来转化。否则报错:文字与格式字符串不匹
配。
定义了变量,变量的默认值为空,此时进行计算,结果一定为
NULL
。所以
变量必须初始化。
初始化有三种方式:
v7 constant number := 100;
说明:定义
v7
为常量,定义时就必须给定值。然后在程序中就不能再对
v7
进行赋值了,否则会
报错:表达式
'V7'
不能用作赋值目标。
v8 number default 10;
说明:定义
v8
时就给
定默认值
10
。注意,
number
类型变量的默认值不是
0,
而是
NULL
。
v9 number not
null := 1000.50;
说明:定义
v9
变量不能为空,此时必须给出一个不为
NULL
的
值。在运行时发现
v9
为
NULL
,则报错:说明为
NOT NULL
的变量必须有初始化
赋值。
预测各打印结果,如果代码有错误请先改正:
declare v1 char; v2
varchar2(10; v3 number; v4 number(5; v5 number(5,2; v6 date; v7 number default 10;
begin v1:='ab'; v2:='abcd'; v4:=9998.99; v5:=1000.5555555; v6:=to_date('2002-10-
2','yyyy-mm-dd'; dbms_output.put_line(v1; dbms_output.put_line(v2;
dbms_output.put_line(v3+100; dbms_output.put_line(v4; dbms_output.put_line(v5;
dbms_output.put_line(v6; dbms_output.put_line(v7+100; end;
只能在脚本中使用的变