LOB 类型的数据库列仅存储定位符,该定位符指向大型对象的存储位置
DBMS_LOB 程序包用于操纵 LOB 数据
PL/SQL 中可以直接处理长度小于 32767 的 LOB 内容,这时 LOB 被自动转化为 VARCHAR2 类型。而如果长度超过了这个值,则无
法直接赋值或访问,需要通过 DBMS_LOB 包来进行处理。
三)复合类型
1)属性类型
%TYPE 引用变量和数据库列的数据类型一致
%ROWTYPE 提供表示表中一行的记录类型
使用属性类型的优点:
不需要知道被引用的表列的具体类型
如果被引用对象的数据类型发生改变,PL/SQL 变量的数据类型也随之改变,健壮性
例:
SQL>set serverout on
declare
v_ename scott.emp1.ename%type;
v_emp1 scott.emp1%rowtype;
begin
select ename into v_ename from scott.emp1 where empno=7788;
select * into v_emp1 from scott.emp1 where empno=7788;
dbms_output.put_line('姓名:'||v_ename);
dbms_output.put_line('工号:'||v_emp1.empno);
end;
/
...
2)记录类型
类似%rowtype,如果需要表中的某些字段,而不是全部字段作为一个变量类型,就需要自定义一个记录类型
语法示例:
例:
DECLARE
TYPE emp_record_type IS RECORD(name emp.ename%TYPE,salary emp.sal%TYPE,title emp.job%TYPE);
emp_record emp_record_type;
BEGIN
SELECT ename,sal,job INTO emp_record FROM emp WHERE empno=7788;
dbms_output.put_line('雇员名:'||emp_record.name);
END;
/
如例所示,emp_record_type 是 PL/SQL 记录类型,并且该 PL/SQL 记录类型包含了三个成员(name,salary,title);emp_record 是记
录变量;emp_record.name 则表示引用记录变量 emp_record 的成员。
PL/SQL 记录类似于高级语言中的结构,每个 PL/SQL 记录一般都包含多个成员。当使用 PL/SQL 记录时,首先需要在定义部分定
义记录类型和记录变量,然后在执行部分引用该记录变量。需要注意,当引用记录成员时,必须要加记录变量作为前缀(记录
变量.记录成员)。
3)表类型(索引表)
PL/SQL 表类型只有两列,一个索引列和表列(表列不一定代表一个字段),通过索引列中的索引值来操作 PL/SQL 表中对应的用
户自定义列。
相关文档
评论