首页 > 数据库 >oracle数据库中的%type 及%rowtype

oracle数据库中的%type 及%rowtype

时间:2023-07-28 11:55:35浏览次数:34  
标签:NAME PARENT 数据类型 SF rowtype oracle ORG type ID

1 %TYPE说明

为了使一个变量的数据类型与另一个已经定义了的变量(尤其是表的某一列)的数据类型相一致,Oracle提供了%TYPE定义方式。当被参照的那个变量的数据类型改变了之后,这个新定义的变量的数据类型会自动跟随其改变,容易保持一致,也不用修改PL/SQL程序了。当不能确切地知道被参照的那个变量的数据类型时,就只能采用这种方法定义变量的数据类型。
2 %ROWTYPE说明

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

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

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

 

    --组织机构结构表
    CREATE TABLE SF_ORG
    (
    ORG_ID INT NOT NULL, --组织机构主键ID
    ORG_NAME VARCHAR2(50),--组织机构名称
    PARENT_ID INT--组织机构的父级
    )
     
    --一级组织机构
    INSERT INTO SF_ORG(ORG_ID, ORG_NAME, PARENT_ID) VALUES(1, '一级部门1',0);
     
    --二级部门
     
    INSERT INTO SF_ORG(ORG_ID, ORG_NAME, PARENT_ID) VALUES(2, '二级部门2',1);
    INSERT INTO SF_ORG(ORG_ID, ORG_NAME, PARENT_ID) VALUES(3, '二级部门3',1);
    INSERT INTO SF_ORG(ORG_ID, ORG_NAME, PARENT_ID) VALUES(4, '二级部门4',1);


3.2           %TYPE

声明两个与SF_ORG表中的PARENT_ID和ORG_NAME列的数据类型相同的变量,然后用替换变量&ORG_ID接受输入的组织机构编码,查询并显示该组织机构的名称、上级部门ID。注意,在使用由%TYPE定义的变量时要用“.”运算符指定表名限定词。

 执行结果如下图所示:

type01.txt里的SQL语句如下:

 

    DECLARE
      V_ORG_NAME SF_ORG.ORG_NAME%TYPE; --与ORG_NAME类型相同
      V_PARENT_ID SF_ORG.PARENT_ID%TYPE;--与PARENT_ID类型相同
    BEGIN
      SELECT ORG_NAME,PARENT_ID INTO V_ORG_NAME,V_PARENT_ID
      FROM SF_ORG SO
      WHERE SO.ORG_ID=&ORG_ID;
      DBMS_OUTPUT.PUT_LINE('部门名称:' || V_ORG_NAME);
      DBMS_OUTPUT.PUT_LINE('上级部门编码:' || TO_CHAR(V_PARENT_ID));
    END;


1.1.3.3           %ROWTYPE

声明一个与SF_ORG表中各个列的列名、数据类型都相同的行记录变量V_SF_ORG_REC,然后用替换变量&ORG_ID接受输入的组织机构编码,查询并显示该组织机构的名称、上级部门ID。注意,在使用由%ROWTYPE定义的变量时要用“.”运算符指定记录变量名限定词。

 执行结果如下图所示:

rowtype01.txt里的SQL语句如下:

    DECLARE
      V_SF_ORG_REC SF_ORG%ROWTYPE; --与SF_ORG表中的各个列相同
    BEGIN
      SELECT * INTO V_SF_ORG_REC
      FROM SF_ORG SO
      WHERE SO.ORG_ID=&ORG_ID;
      DBMS_OUTPUT.PUT_LINE('部门ID:' || TO_CHAR(V_SF_ORG_REC.ORG_ID));
      DBMS_OUTPUT.PUT_LINE('部门名称:' || V_SF_ORG_REC.ORG_NAME);
      DBMS_OUTPUT.PUT_LINE('上级部门编码:' || TO_CHAR(V_SF_ORG_REC.PARENT_ID));
    END;

标签:NAME,PARENT,数据类型,SF,rowtype,oracle,ORG,type,ID
From: https://www.cnblogs.com/5miyuan/p/17587232.html

相关文章

  • dephi RTI (Runtime Type Information)获取运行时的控件信息
    varEdit:TComponent;beginEdit:=FindComponent("Edit1");IfEditisTEditthenTEdit(Edit).Text:='你好Delphi7';end;  RTTI(RunTimeTypeInformation):运行时类型信息,就是在程序运行后也能得到类型(譬如TButton类)的信息. 这在早期主要用于IDE......
  • LibGdx 游戏引擎 freetype 使用指南
    网上大多数的Libgdx文档,使用的版本都是0.9X的时候留下的,1.X版本的比较少。freetype在1.X时使用发生发生了变化,写一下变化。本人使用的是Libgdx1.6版本。首先给两个传送门,可以去Git上看官方的wiki。官方的freetype说明https://github.com/libgdx/libgdx/wiki/Gdx-freetype官方的......
  • 65.oracle中查看缓存命中率
    DBBlockGets:请求的数据块在buffer能满足的个数当前模式块意思就是在操作中正好提取的块数目,而不是在一致性读的情况下而产生的块数。正常的情况下,一个查询提取的块是在查询开始的那个时间点上存在的数据块,当前块是在这个时刻存在的数据块,而不是在这个时间点之前或者之后的数据......
  • Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported]
    @RequestParam用来处理Content-Type为application/x-www-form-urlencoded编码的内容,Content-Type默认为该属性。可以用于接收URL中的参数并捆绑到方法的参数中,也可以接受post请求体中的Content-Type为application/x-www-form-urlencoded的数据。(post比较常用的是json格式......
  • typescript
    原始数据类型包括:布尔值、数值、字符串以及ES6中的新类型Symbol和ES10中的新类型BigInt数组泛型letlist:Array<number>=[1,2,3]; 任意类型letlist:any[]=['itbaizhan',10,{website:'https://xxx.com'}]; 元组letinfo:[string,number]=['g......
  • python使用ctypes调用gcc编译的dll之ctypes的使用
    简介ctypes是Python的外部函数库。它提供了与C兼容的数据类型,并允许调用C或C++编译后的DLL或共享库中的函数。可使用该模块以纯Python形式对这些库进行封装。本例中代码基于window系统,python为64位3.9.12,如需在liunx上使用请参考上篇博客1、代码的基础结构如下1.1新......
  • java获取contenttype
    如何在Java中获取Content-Type1.简介在开发中,有时候我们需要获取网络请求的Content-Type。Content-Type是HTTP协议中用来定义请求或响应中的主体的媒体类型的一种机制。在Java中,我们可以使用一些方法来获取Content-Type。2.获取Content-Type的步骤下面是获取Content-Type的步......
  • 【Oracle】 instr函数与substr函数以及自制分割函数
    Oracleinstr函数与substr函数以及自制分割函数instr通常被用来作为判断某个字符串中是否含有执行字符串和将返回结果作为一些数据分割的数据,即有模糊查询like的作用,当返回的查询结果的序号为0的时候就是没有匹配上substr函数就是很简单明了,就是个截取字符函数instr函数通常使......
  • 生产需求:ORACLE ASM磁盘组磁盘添加和替换
    一、背景日常生产过程中,随着时间的推移和数据库数据量的增长,我们会遇到数据库磁盘组空间不足或者存储时间过长需要更换存储的问题,那么这篇文章就给大家介绍一下,对磁盘组进行加盘和替换的操作。如有不足欢迎大家指正。asm磁盘添加前,需要存储工程师在存储上划分好需要添加的盘,然后......
  • 查看oracle数据泵导入导出进度
    查找对应的job_nameQL>colOWNER_NAMEfora30SQL>colJOB_NAMEfora30SQL>colstatefora20SQL>setpagesize999linesize100SQL>selectowner_name,job_name,statefromdba_datapump_jobs;进入交互界面expdptest/testattach=SYS_EXPORT_SCHEMA_01sta......