PLSQL记录与ROWTYPE类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PLSQL记录与ROWTYPE类型相关的知识,希望对你有一定的参考价值。

PLSQL记录类似语言中的结构struct,方便于处理单行多列数据,PLSQL记录是由一组相关的记录成员Field组成,使用的话基本上就两种类型:

一、自定义的也就是自定义Field及类型,这种一般满足于单行多列不是全部的列

TYPE EMP_RECORD_TYPE1 IS RECORD(自定义的Field

V_NAME VARCHAR2(20),

V_SAL NUMBER(6,3)

);

EMP_RECORD1 EMP_RECORD_TYPE1;


TYPE EMP_RECORD_TYPE2 IS RECORD(用原表的Field

V_NAME EMP.ENAME%TYPE,

V_SAL EMP.SAL%TYPE

);

EMP_RECORD2 EMP_RECORD_TYPE2;

自定义的一般用在不是全表的列的时候

DECLARE

TYPE EMP_RECORD_TYPE2 IS RECORD(用原表的Field

V_NAME EMP.ENAME%TYPE,

V_SAL EMP.SAL%TYPE

);

EMP_RECORD EMP_RECORD_TYPE2;

BEGIN

SELECT ENAME,SAL INTO EMP_RECORD FROM EMP;

DBMS_OUTPUT.PUT_LINE(EMP_RECORD.V_NAME);

END;

二、通过%ROWTYPE属性可以基于表或者试图定义记录变量,此定义的记录变量,成员名与类型均与原表一模一样,如果只是单纯的处理某几列,那么应该使用自定义的记录类型和变量。

IDENTIFIER TABLE_NAME%rowtype;

IDENTIFIER VIEW_NAME%rowtype;

dept_record dept%ROWTYPE;

emp_record emp%ROWTYPE;



declare

type emp_cursor is select * from emp;

emp_record emp_cursor%ROWTYPE;

begin

open emp_cursor ;

loop

fetch emp_cursor into emp_record;

exit when emp_cursor%NOTFOUND;

dbms_output.put_line(emp_record.ename||emp_record.sal);

end loop;

close emp_cursor;

end;












本文出自 “运维邦” 博客,谢绝转载!

以上是关于PLSQL记录与ROWTYPE类型的主要内容,如果未能解决你的问题,请参考以下文章

Oracle_PL/SQL 游标

检查 plsql 中的记录 IS NOT NULL

SQL记录-PLSQL记录

oracle中plsql练习题----查询姓为“SMITH”的员工信息,并输出其员工号姓名工资部门号。 – –如果该员工不存在,则插入一条新记录,员工号为2012,员工姓名为“Smith”,工(代码

PLSQL 之类型变量和结构

ORACLE中%TYPE和%ROWTYPE的使用