Oracle中PL/SQL这部分的学习刚刚开始。
教程中有几句话很在意:
1.变量在定义的同时也可以将其说明成常量并赋予固定的值。
2.变量的命名规则是:以字母开头,后跟其他的字符序列,字符序列中可以包含字母、数值、下划线等符号,最大长度为30个字符, 不区分大小写。
3. 变量名不要 和在程序中引用的字段名相重, 如果相重,变量名 会被当作列名来使用。
常量的定义:
变量名 CONSTANT 类型标识符 [NOT NULL][:=值|DEFAULT 值];
有意思的是,PL/SQL中变量类型的定义可以相对化,即定义成和某个表中某个字段保持一致。
变量名 [CONSTANT] 表名.字段名%TYPE [NOT NULL][:=值|DEFAULT 值];
特殊的PL/SQL变量数据类型:
BINARY_INTEGER : 带正负号的整数。
LONG : 注意,是字符型。可变长字符,最大2G。
陌生的数据类型:
LOB : 大对象类型,用来存储非结构化数据,长度可达4G。可以存储视频、音频或图片,支持随机访问,存储的数据可以位于数据库内或数据库外,具体有四种类型:BFILE、BLOB、CLOB、NCLOB。但是操纵大对象需要使用Oracle提供的DBMS_LOB包。
结合变量:
SQL*Plus工具里面独有的一种变量,在整个SQL*Plus环境下有效,在退出SQL*Plus之前始终有效,所以可以使用该变量在不同的程序之间传递信息。 -- 简陋的工具不想用,不知道PL/SQL Developer里面有没有类似的变量。
结合变量可以在程序中引用或赋值,引用时在结合变量前面要加上“∶”(半角冒号)。 不过,这个也是只在SQL*Plus才能用吧…?
记录变量:
记录变量包含若干个字段,在结构上同表的一个记录相同,定义方法是在表名后跟%ROWTYPE。记录变量的字段名就是表的字段名,数据类型也一致。
记录变量的定义方法是:
记录变量名 表名%ROWTYPE;
获得记录变量的字段的方法是:记录变量名.字段名,如emp_record.ename。
TABLE类型变量
在PL/SQL中可以定义TABLE类型的变量。 TABLE数据类型用来存储可变长度的一维数组数据,即数组中的数据动态地增长。要定义TABLE变量,需要先定义TABLE数据类型。通过使用下标来引用TABLE变量的元素。
TABLE数据类型的定义形式如下:
TYPE 类型名 IS TABLE OF 数据类型[NOT NULL] INDEX BY BINARY_INTEGER;
此数据类型自动带有BINARY_INTEGER型的索引。
P.S.: 一维数组,数组元素数据类型可以自定义,也就是说,可以定义元素类型为记录型变量来形成一个真正的表。不过这些目前只是设想,没经过证实。
对空值的算术和比较运算的结果都是空,但对空值可以进行连接运算,结果是另外一部分的字符串。
条件部分是一个逻辑表达式,值只能是真(TRUE)、假(FALSE)或空(NULL)。
-- 逻辑表达式结果为null的情况,会怎么样??
教程中有几句话很在意:
1.变量在定义的同时也可以将其说明成常量并赋予固定的值。
2.变量的命名规则是:以字母开头,后跟其他的字符序列,字符序列中可以包含字母、数值、下划线等符号,最大长度为30个字符, 不区分大小写。
3. 变量名不要 和在程序中引用的字段名相重, 如果相重,变量名 会被当作列名来使用。
常量的定义:
变量名 CONSTANT 类型标识符 [NOT NULL][:=值|DEFAULT 值];
有意思的是,PL/SQL中变量类型的定义可以相对化,即定义成和某个表中某个字段保持一致。
变量名 [CONSTANT] 表名.字段名%TYPE [NOT NULL][:=值|DEFAULT 值];
特殊的PL/SQL变量数据类型:
BINARY_INTEGER : 带正负号的整数。
LONG : 注意,是字符型。可变长字符,最大2G。
陌生的数据类型:
LOB : 大对象类型,用来存储非结构化数据,长度可达4G。可以存储视频、音频或图片,支持随机访问,存储的数据可以位于数据库内或数据库外,具体有四种类型:BFILE、BLOB、CLOB、NCLOB。但是操纵大对象需要使用Oracle提供的DBMS_LOB包。
结合变量:
SQL*Plus工具里面独有的一种变量,在整个SQL*Plus环境下有效,在退出SQL*Plus之前始终有效,所以可以使用该变量在不同的程序之间传递信息。 -- 简陋的工具不想用,不知道PL/SQL Developer里面有没有类似的变量。
结合变量可以在程序中引用或赋值,引用时在结合变量前面要加上“∶”(半角冒号)。 不过,这个也是只在SQL*Plus才能用吧…?
记录变量:
记录变量包含若干个字段,在结构上同表的一个记录相同,定义方法是在表名后跟%ROWTYPE。记录变量的字段名就是表的字段名,数据类型也一致。
记录变量的定义方法是:
记录变量名 表名%ROWTYPE;
获得记录变量的字段的方法是:记录变量名.字段名,如emp_record.ename。
TABLE类型变量
在PL/SQL中可以定义TABLE类型的变量。 TABLE数据类型用来存储可变长度的一维数组数据,即数组中的数据动态地增长。要定义TABLE变量,需要先定义TABLE数据类型。通过使用下标来引用TABLE变量的元素。
TABLE数据类型的定义形式如下:
TYPE 类型名 IS TABLE OF 数据类型[NOT NULL] INDEX BY BINARY_INTEGER;
此数据类型自动带有BINARY_INTEGER型的索引。
P.S.: 一维数组,数组元素数据类型可以自定义,也就是说,可以定义元素类型为记录型变量来形成一个真正的表。不过这些目前只是设想,没经过证实。
对空值的算术和比较运算的结果都是空,但对空值可以进行连接运算,结果是另外一部分的字符串。
条件部分是一个逻辑表达式,值只能是真(TRUE)、假(FALSE)或空(NULL)。
-- 逻辑表达式结果为null的情况,会怎么样??