ORACLE %TYPE与%ROWTYPE

如果要定义一个类型与某个变量的数据类型或数据库表中某个列的数据类型一致的变量的变量, 可以使用%TYPE来实现.

如果要定义一个与数据库中某个表结构一致的记录类型的变量,可以使用%ROWTYPE.

以默认测试用户scott下的表做例子

注:安装的时候如果没解锁可以用sys登录,执行解锁语句: alter user scott account unlock;

1 DECLARE
2   v_ename emp.ename % TYPE;
3   v_emp emp % ROWTYPE;
4 BEGIN
5   SELECT ename INTO v_ename FROM emp WHERE empno = 7369;
6   SELECT * INTO v_emp FROM emp WHERE empno = 7499;
7   DBMS_OUTPUT.put_line(v_ename);
8   DBMS_OUTPUT.put_line(v_emp.empno||‘ ‘||v_emp.ename||‘ ‘||v_emp.job);
9 END;

输出结果:

SMITH
7499 ALLEN SALESMAN

注: 使用ORACLE自带的SQL Developer工具使用dbms_output.put_line有可能没有输出,  执行一下 SET SERVEROUTPUT ON;  再重新运行上面匿名程序块就可以了.

时间: 2025-01-23 21:06:41

ORACLE %TYPE与%ROWTYPE的相关文章

[独孤九剑]Oracle知识点梳理(十)%type与%rowtype及常用函数

本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracle知识点梳理(四)SQL语句之DML和DDL [独孤九剑]Oracle知识点梳理(五)数据库常用对象之Table.View [独孤九剑]Oracle知识点梳理(六)数据库常用对象之Procedure.function.Sequence [独孤九剑]Oracle知识点梳理(七)数据库常用对象之Curs

定义declare、%TYPE%、ROWTYPE、加循环

%TYPE:定义一个变量,其数据类型与已经定义的某个 数据变量的类型相同,或者与数据库表的某个列的数据类型相同,这时可以使用%TYPE. %ROWTYPE PL/SQL 提供%ROWTYPE 操作符, 返回一个记录类型, 其数据类型和数据库表的数据结构相一致. 使用%ROWTYPE 特性的优点在于:1.所引用的数据库中列的个数和数据类型可以不必知道.2.所引用的数据库中列的个数和数据类型可以实时改变. 赋值语句 select ... into .... declare v_name teache

%type、%rowtype 、record区别

1. 使用%TYPE 在许多情况下,PL/SQL变量可以用来存储在数据库表中的数据.在这种情况下,变量应该拥有与表列相同的类型.例如,students表的first_name列的类型为VARCHAR2(20),我们可以按照下述方式声明一个变量: DECLARE v_FirstName VARCHAR2(20); 但是如果first_name列的定义改变了会发生什么(比如说表改变了,first_name现在的类型变为VARCHAR2(25))?那就会导致所有使用这个列的PL/SQL代码都必须进行修

Oracle过程:%TYPE,%ROWTYPE,CURSOR,INTO,FOR...LOOP

/*创建一个过程,ORACLE PL/SQL语法*/ CREATE OR REPLACE PROCEDURE MYPROC AS    v_id     t_user.id%TYPE; /*声明变量,类型与指定表字段一致*/    v_user   t_user%ROWTYPE; /*声明变量,表示一行记录,结构与指定表一行记录一致*/    CURSOR c_user IS SELECT * FROM t_user; /*声明游标,表示多行记录,每一行结构与查询结果一致*/ BEGIN    

ORACLE中%TYPE和%ROWTYPE的使用

1.%TYPE 为了使一个新定义的变量与另一个已经定义了的变量(通常是表的某一列)的数据类型保持一致,Oracle提供了%Type的定义方式,当被参照的那个变量的数据类型发生改变时,那么这个新定义的变量的数据类型也会随之发生改变,这种定义方式类似与其他编程语言中的"var",其类型不由自己决定.而是由与之关联的对象决定.这样就不用修改Sql语句了,当不能确切的知道那个变量的类型是,就采用这种方法来定义变量的数据类型. DECLARE V_ORG_NAME SF_ORG.ORG_NAME

ORACLE中record、varray、table和%type、%rowtype的使用详解

1     说明 1.1       RECORD 定义记录数据类型.它类似于C语言中的结构数据类型(STRUCTURE),PL/SQL提供了将几个相关的.分离的.基本数据类型的变量组成一个整体的方法,即RECORD复合数据类型.在使用记录数据类型变量时,需要在声明部分先定义记录的组成.记录的变量,然后在执行部分引用该记录变量本身或其中的成员. 定义记录数据类型的语法如下: TYPE RECORD_NAME IS RECORD( V1  DATA_TYPE1 [NOT NULL][:=DEFAU

ORACLE中 %TYPE 和 %ROWTYPE 的使用

%TYPE 用在变量的声明里,用于取得表中的字段类型: %ROWTYPE 用于声明基于某个表的行类型: 示例: %ROWTYPE 使用 DECLARE      CURSOR pdct_cur      IS SELECT * FROM PRODUCTINFO; cur_prodcrd productinfo%ROWTYPE; BEGIN         OPEN pdct_cur;          FETCH pdct_cur INTO cur_prodrcd;          DBMS_

Oracle开发专题之:%TYPE 和 %ROWTYPE

1. 使用%TYPE 在许多情况下,PL/SQL变量可以用来存储在数据库表中的数据.在这种情况下,变量应该拥有与表列相同的类型.例如,students表的first_name列的类型为VARCHAR2(20),我们可以按照下述方式声明一个变量: DECLARE v_FirstName VARCHAR2(20); 但是如果first_name列的定义改变了会发生什么(比如说表改变了,first_name现在的类型变为VARCHAR2(25))?那就会导致所有使用这个列的PL/SQL代码都必须进行修

Oracle PL/SQL中如何使用%TYPE和%ROWTYPE

1.%TYPE DECLARE DNAME DEPT.DNAME%TYPE; --动态的定义变量的类型,跟随着dept表中dname字段的类型变化而变化滴呀 BEGIN SELECT DNAME INTO DNAME FROM DEPT WHERE DEPTNO=50; DBMS_OUTPUT.PUT_LINE(DNAME); END; 2.%ROWTYPE DECLARE V_ROW DEPT%ROWTYPE; --和dept表中的每一列数据类型都相同滴呀 BEGIN SELECT * INT