(一)literal 是一个不能成为标识符的字符、数值或者布尔值。
1. 字符型文字
就是串文字,包含了由单引号界定的一个或多个字符。字符型文字可直接赋给char后者varchar2的变量。如果想包含引号需要将两个单引号并排放置。'''' 相当于包含单个引号的字符,不等于'',''表示0长度字符串,在pl/sql中与null相同。
2. 数字型文字
表示一个整数或者实数数值。可直接赋值给number的变量。是唯一可以成为算术表达式的一部分文字。
3. 布尔型文字
true、false、null
(二)变量
1. 变量声明
variable_name type [constant] [not null] [:= value]; 可以使用default替代:=,对于未初始化的变量会赋值为null。另外在同一行上只能有一个变量声明。如:
DECLARE
v_fristname, v_lastname VARCHAR2(20); 是错误的 应该是
v_fristname VARCHAR2(20);
v_lastname VARCHAR2(20);
(三)pl/sql 4种类型
标量(scalar)、复合(composite)以及引用(reference)和lob类型。
1. 使用%type
如:
DECLARE
v_Tempvar NUMBER(7,3) NOT NULL := 12.3;
v_var2 v_Tempvar%TYPE; -- returns NUMBER(7,3)
2. 用户定义子类型
基于现有类型的pl/sql类型。主要是提供个新类型便于理解。pl/sql的standard包里定义了一些,如decumal和integer就是number的子类型。
语法如下:
SUBTYPE new_type IS original_type
定义子类型不能直接使用限定如下面的声明就是错误的
DECLARE
var1 NUMBER(4);
SUBTYPE subType1 is var1%TYPE;
subType1 var2
可以使用%type来实现这样的需求。