首页 > 数据库 >ORACLE中%TYPE和%ROWTYPE的使用

ORACLE中%TYPE和%ROWTYPE的使用

时间:2022-11-18 14:24:00浏览次数:38  
标签:变量 PARENT 数据类型 SF ROWTYPE ORACLE ORG TYPE ID

1、%TYPE

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

复制代码
 1 DECLARE   
 2   V_ORG_NAME SF_ORG.ORG_NAME%TYPE; --与ORG_NAME类型相同  
 3   V_PARENT_ID SF_ORG.PARENT_ID%TYPE;--与PARENT_ID类型相同  
 4 BEGIN  
 5   SELECT ORG_NAME,PARENT_ID INTO V_ORG_NAME,V_PARENT_ID  
 6   FROM SF_ORG SO  
 7   WHERE SO.ORG_ID=&ORG_ID;  
 8   DBMS_OUTPUT.PUT_LINE('部门名称:' || V_ORG_NAME);  
 9   DBMS_OUTPUT.PUT_LINE('上级部门编码:' || TO_CHAR(V_PARENT_ID));  
10 END;
复制代码

2、%RowType

如果一个表有较多的列,使用%ROWTYPE来定义一个表示表中一行记录的变量,比分别使用%TYPE来定义表示表中各个列的变量要简洁得多,并且不容易遗漏、出错。这样会增加程序的可维护性。

   为了使一个变量的数据类型与一个表中记录的各个列的数据类型相对应、一致,Oracle提供%ROWTYPE定义方式。当表的某些列的数据类型改变了之后,这个新定义的变量的数据类型会自动跟随其改变,容易保持一致,也不用修改PL/SQL程序了。当不能确切地知道被参照的那个表的结构及其数据类型时,就只能采用这种方法定义变量的数据类型。

   一行记录可以保存从一个表或游标中查询到的整个数据行的各列数据。一行记录的各个列与表中一行的各个列有相同的名称和数据类型。

复制代码
 1 DECLARE   
 2   V_SF_ORG_REC SF_ORG%ROWTYPE; --与SF_ORG表中的各个列相同  
 3 BEGIN  
 4   SELECT * INTO V_SF_ORG_REC  
 5   FROM SF_ORG SO  
 6   WHERE SO.ORG_ID=&ORG_ID;  
 7   DBMS_OUTPUT.PUT_LINE('部门ID:' || TO_CHAR(V_SF_ORG_REC.ORG_ID));  
 8   DBMS_OUTPUT.PUT_LINE('部门名称:' || V_SF_ORG_REC.ORG_NAME);  
 9   DBMS_OUTPUT.PUT_LINE('上级部门编码:' || TO_CHAR(V_SF_ORG_REC.PARENT_ID));  
10 END;

标签:变量,PARENT,数据类型,SF,ROWTYPE,ORACLE,ORG,TYPE,ID
From: https://www.cnblogs.com/fhuafeng/p/16903085.html

相关文章

  • React中常见的TypeScript定义实战
    一引沿Fiber架构是React16中引入的新概念,目的就是解决大型React应用卡顿,React在遍历更新每一个节点的时候都不是用的真实DOM,都是采用虚拟DOM,所以可以理解成fiber就是R......
  • React-hooks+TypeScript最佳实战
    ReactHooks什么是HooksReact一直都提倡使用函数组件,但是有时候需要使用state或者其他一些功能时,只能使用类组件,因为函数组件没有实例,没有生命周期函数,只有类组件才......
  • python笔记76-types.FunctionType 动态创建函数
    前言types.FunctionType创建函数有2种方式:从已有函数的基础上,创建一个新函数从一个compile构建的函数对象上,创建一个新函数FunctionType使用FunctionType可以用......
  • Purging/Cleaning Sysaux Tablespace In Oracle
    RestrictionsonSYSAUXtablespace1.UsingSYSAUXDATAFILEclauseintheCREATEDATABASEstatementyoucanspecifyonlydatafileattributesinSYSAUXtablespac......
  • 自学 TypeScript 第三天 使用webpack打包 TS 代码
    前言:大家好啊,昨天介绍了TS编译器的配置,但在我们实际开发当中直接使用TS编译器去编译代码的情况会有,但没有很多,因为我们在开发大型项目的时候,一般我们都会用到打包工具......
  • JavaScript语法_变量和JavaScript语法_变量typeof
    JavaScript语法_变量:1.变量:变量:小块存储数据的内存空间Java语言是强类型语言,而Javascript是弱类型语言。强类型:在开辟变量存储空间时,定义了空间将来存储的数据的数据......
  • 【转载】Oracle11gR2 RAC primary+Single standby DG配置实践
    很久之前做的实验,今天在CSDN存档一下:说明:RACprimary和Singlestandby配置2节点RAC和1个singleinstance组成的dataguard环境。 1.环境介绍Primarydatabase是一个......
  • oracle中with的用法是什么
    oracle中with的用法是什么在oracle中,with语句可以实现子查询,用于创建一个公共临时表,提高语句执行的效率,语法为“withtempNameas(select....)select...”。我们在ora......
  • Oracle重建索引
    创建表createtablestudent(student_idnumber,namevarchar2(240))tablespaceschool_data;创建索引createindexstudent_n1onstuden(name);查看......
  • 【Python错误】TypeError: sequence item 0: expected str instance, int found【列表
    【错误类型】TypeError:sequenceitem0:expectedstrinstance,intfound前景提要:获得用户输入的以逗号分隔的三个数字,记为a、b、c,以a为起始值,b为前后相邻数的比值,c为......