PL/SQL 变量与常用数据类型
来源:互联网 发布:化工行业发展现状知乎 编辑:程序博客网 时间:2024/06/03 10:22
1.基础数据类型
以ORACLE8i为例,可以使用的基础数据类型有:
类型
子类
说 明
范 围
ORACLE限制
CHAR
Character
String
Rowid
Nchar
定长字符串
民族语言字符集
0à32767
可选,确省=1
2000
VARCHAR2
Varchar, String
NVARCHAR2
可变字符串
民族语言字符集
0à32767
4000
4000
BINARY_INTEGER
带符号整数,为整数计算优化性能
NUMBER(p,s)
Dec
Double precision
Integer
Int
Numeric
Real
Small int
小数, NUMBER 的子类型
高精度实数
整数, NUMBER 的子类型
整数, NUMBER 的子类型
与NUMBER等价
与NUMBER等价
整数, 比 integer 小
LONG
变长字符串
0->2147483647
32,767字节
DATE
日期型
公元前4712年1月1日至公元后4712年12月31日
BOOLEAN
布尔型
TRUE, FALSE,NULL
不使用
ROWID
存放数据库行号
UROWID
通用行标识符,字符类型
2.%TYPE变量
在声明变量时,除了可以使用Oracle规定的数据类型外,还可以使用%TYPE关键字定义一个变量。其数据类型与已经定义的某个数据变量(尤其是表的某一列)的数据类型相一致。
使用%TYPE特性的优点在于:
l 所引用的数据库列的数据类型可以不必知道;
l 所引用的数据库列的数据类型可以实时改变,容易保持一致,也不用修改PL/SQL程序。
%TYPE变量定义的格式如下:
DECLAREvar_name TableName.ColumnName%TYPE;
例子:
DECLARE v_name emp.ename%TYPE; v_sal emp.sal%TYPE; v_date emp.hiredate%TYPE;BEGIN SELECT ename, sal, hiredate INTO v_name,v_sal,v_date FROM emp WHERE empno='7369'; DBMS_OUTPUT.PUT_LINE(v_name||'---'||v_sal||'--'||v_date);END;
3.复合变量
3.1自定义记录类型记录类型类似于C语言中的结构数据类型,它把逻辑相关的、分离的、基本数据类型的变量组成一个整体存储起来,它必须包括至少一个标量型或RECORD 数据类型的成员,称作PL/SQL RECORD 的域(FIELD),其作用是存放互不相同但逻辑相关的信息。在使用记录数据类型变量时,需要先在声明部分先定义记录的组成、记录的变量,然后在执行部分引用该记录变量本身或其中的成员。
定义记录类型语法格式如下:
TYPE record_name IS RECORD( v1 data_type1 [NOT NULL] [:= default_value ], v2 data_type2 [NOT NULL] [:= default_value ], ...... vn data_typen [NOT NULL] [:= default_value ] );例子1:
DECLARE TYPE test_rec IS RECORD( Name VARCHAR2(30) NOT NULL := '胡勇', Info VARCHAR2(100)); rec_book test_rec;BEGIN rec_book.Name :='胡勇'; rec_book.Info :='谈PL/SQL编程;'; DBMS_OUTPUT.PUT_LINE(rec_book.Name||' ' ||rec_book.Info);END;
例子2:
DECLARE--定义与hr.employees表中的这几个列相同的记录数据类型 TYPE RECORD_TYPE_EMPLOYEES IS RECORD( f_name hr.employees.first_name%TYPE, h_date hr.employees.hire_date%TYPE, j_id hr.employees.job_id%TYPE);--声明一个该记录数据类型的记录变量 v_emp_record RECORD_TYPE_EMPLOYEES;BEGIN SELECT first_name, hire_date, job_id INTO v_emp_record FROM employees WHERE employee_id = &emp_id; DBMS_OUTPUT.PUT_LINE('雇员名称:'||v_emp_record.f_name ||' 雇佣日期:'||v_emp_record.h_date ||' 岗位:'||v_emp_record.j_id);END;
注:
1.可以用 SELECT语句对记录变量进行赋值,只要保证记录字段与查询结果列表中的字段相配即可。
2.一个记录类型的变量只能保存从数据库中查询出的一行记录,若查询出了多行记录,就会出现错误。
3.2 %ROWTYPE类型
PL/SQL 提供%ROWTYPE操作符, 返回一个记录类型, 其数据类型和数据库表的数据结构相一致。
使用%ROWTYPE特性的优点在于:
l 所引用的数据库中列的个数和数据类型可以不必知道;
l 所引用的数据库中列的个数和数据类型可以实时改变,容易保持一致,也不用修改PL/SQL程序。
例子:DECLARE v_empno emp.empno%TYPE :=&no; rec emp%ROWTYPE;--rec就是对应于emp表的%ROWTYPE类型BEGIN SELECT * INTO rec FROM emp WHERE empno=v_empno; DBMS_OUTPUT.PUT_LINE('姓名:'||rec.ename||'工资:'||rec.sal||'工作时间:'||rec.hiredate); END;
3.3 LOB类型
ORACLE提供了LOB (Large OBject)类型,用于存储大的数据对象的类型。ORACLE目前主要支持BFILE, BLOB, CLOB 及 NCLOB 类型。
BFILE (Movie)
存放大的二进制数据对象,这些数据文件不放在数据库里,而是放在操作系统的某个目录里,数据库的表里只存放文件的目录。
BLOB(Photo)
存储大的二进制数据类型。变量存储大的二进制对象的位置。大二进制对象的大小<=4GB。
CLOB(Book)
存储大的字符数据类型。每个变量存储大字符对象的位置,该位置指到大字符数据块。大字符对象的大小<=4GB。
NCLOB
存储大的NCHAR字符数据类型。每个变量存储大字符对象的位置,该位置指到大字符数据块。大字符对象的大小<=4GB。
- PL/SQL 变量与常用数据类型
- PL/SQL 变量与数据类型
- 《PL/SQL 语言开发参考手册》之三:变量与数据类型
- PL/SQL 数据类型和变量 -- 字符
- PL/SQL 数据类型和变量 -- 数值
- PL/SQL 数据类型和变量 -- ROWID
- PL/SQL 数据类型和变量 -- BOOLEAN
- PL/SQL 数据类型和变量 -- 大对象
- PL/SQL-数据类型、变量、控制语句
- PL/SQL的数据类型和常用函数
- PL/SQL的数据类型和常用函数
- PL/SQL复合数据类型(集合与记录)
- PL/SQL学习笔记-常量变量及数据类型初步
- pl/sql 标识符与变量名
- Oracle PL/SQL的数据类型和常用函数
- pl/sql数据类型
- PL/SQL中的数据类型
- PL/SQL数据类型
- JQUERY焦点设置
- 黑马程序员--基础复习2012.8.6
- ASP.NET Thread Usage on IIS 7.5, IIS 7.0, and IIS 6.0
- 图片上传
- varchar与nvarchar的区别
- PL/SQL 变量与常用数据类型
- 工厂模式
- 数据库表操作实例
- PHP页面加载时间 测量
- C#学习笔记2
- Flash AS3中调试组件时出错------无法访问空对象引用的属性或方法。
- 启用用户进程跟踪
- 绑定变量及其优缺点
- Oracle 硬解析与软解析