《PL/SQL 语言开发参考手册》之三:变量与数据类型
《PL/SQL 语言开发参考手册》之三:变量与数据类型
《PL/SQL 语言开发参考手册》下载地址
1、数据类型
1)标量型:
数字型(BINARY_INTEGER,NUMBER)(DEC,FLOAT,REAL... NUMBER 的子类型);
NUMBER(P,S) P:精度,整个的有效数位(从左边开始第一个不为 0 的数字起);S:刻度,可选(小数点后面的保留位数)
BINARY_INTEGER:保存整数,和 NUMBER 的底层的保存方式不同,BINARY_INTEGER 为二进制保存,NUMBER 需要考虑其他东西不是二进制方式;BINARY_INTEGER 之间做加法效率快,而 NUMBER 要先转换二进制再计算;单纯的计算选择使用 BINARY_INTEGER,考虑和表中其他数据的交互的话一般选择 NUMBER;
字符型:CHAR,VARCHAR,VARCHAR2,STRING,LONG(一般 CHAR、VARCHAR2 就够了)。
CHAR 定长(例子:CHAR(5) 如果不够 5 个字符的话就会用空白填充),可以不带长度规定(默认为 1);
VARCHAR2 变长(VARCHAR2(5) 标识最长可以保存 5 个字符),后面的长度规定必须要有。
布尔型:BOOLEAN。
日期型:DATE(后增加 TIMESTAMP,比 DATE 更精细点(精确到秒)INTERVAL),一般用 DATE。
2)组合型:RECORD(常用)、TABLE(常用)、VARRAY(较少用)。
3)参考型:REF CURSOR(游标)、REF object_type。
4)LOB(Large Object)
2、%TYPE
[变量名] [表名.字段名] [%TYPE],表示变量具有与数据库的表中某一字段相同的类型。
例:v_FirstName s_emp.first_name%TYPE;
3、RECORD 类型
4、%ROWTYPE
返回一个基于数据库定义的类型。
注:与 RECORD 类型中定一个 record 相比,一步就完成,而 RECORD 类型中定义分二步:a、所有的成员变量都要申明;b、实例化变量;
可以代替 RECORD 类型。
5、TABLE 类型
TYPE tabletype IS TABLE OF type(类型名,要保存成的数据类型) INDEX BY BINARY_INTEGER;
例:
注:
1)id(索引)的数目的限制由 BINARY_INTEGER 的范围决定(-2147483647<----->2147483647);
2)TABLE 类型与 map<int,_T> 类似;
3)表中的元素可以是复合类型;
4)KEY 没有必要是顺序的;
5)当数据被插入表中的时候,表所需的空间就被分配了;
6、变量的作用域和可见性 <<outer>>
1)执行块里可以嵌入执行块;
2)里层执行块的变量对外层不可见;
3)里层执行块对外层执行块变量的修改会影响外层块变量的值(在此里层,对其他里层则不影响,想要不影响此里层的话可以使用标号标注外层);