PL/SQL 特殊数据类型%TYPE,RECORD,%ROWTYPE

%TYPE类型
当声明一个变量名称后便声明其具体的数据类型,
而使用%TYPE类型可以在声明变量名称后再指定一个字段,声明该变量的数据类型与指定字段的数据类型一致。
--
DECLARE
 --声明变量INAME,其类型与EMP表中的ENAME字段一致
IEMPNO EMP.EMPNO%TYPE;
--定义一个变量承载异常
ERR   VARCHAR2(200);
BEGIN
  SELECT EMPNO INTO IEMPNO FROM EMP WHERE ENAME='SMITH';
/*  SELECT ENAME INTO INAME FROM EMP;*/   --测试异常
  DBMS_OUTPUT.PUT_LINE(IEMPNO);
  EXCEPTION
    WHEN OTHERS THEN
      ERR:=SQLERRM;
      DBMS_OUTPUT.PUT_LINE(ERR);
END;
RECORD类型
RECORD类型又称记录类型,该类型的变量可以存储由多个列组成的一行数据。
因为变量中的每一列需要有明确的数据类型,且每个变量中的列成员是不固定的,所以在声明记录类型的变量之前,
需要先定义一个记录类型,再声明变量 。
--语法
DECLARE
  TYPE RECOED_TYPE IS RECORD
  (
  VAR_NUMBER1 TYPE ,
  V_NUMBER2 TYPE,
  V_NUMBER3 TYPE,
  .
  .
  V_NUMBERN TYPE
  );
  VAR_NAME RECORD_TYPE;  --将该记录给变量,作为变量的类型
BEGIN
  SELECT ENAME,SAL,HIREDATE INTO VAR_NAME FROM EMP WHERE DEPTNO=7369;
  DBMS_OUTPUT.PUT_LINE(VAR_NAME);
END;
--SELECT * FROM DEPT;
DECLARE
--声明一个记录类型
  TYPE DEPT_TYPE IS RECORD
  (
    DE DEPT.DEPTNO%TYPE,
    DN DEPT.DNAME%TYPE,
    LO DEPT.LOC%TYPE
   );
   --用该记录类型来声明一个变量
   VAR_DEPT DEPT_TYPE;
BEGIN
  --查询DEPT表,并将查询数据放入变量VAR_DEPT中
  SELECT DEPTNO,DNAME,LOC INTO VAR_DEPT FROM DEPT WHERE DEPTNO=10;
  --将变量VAR_DEPT打印(打印时需要表明要打印的字段,字段间用||连接)
  DBMS_OUTPUT.PUT_LINE(VAR_DEPT.DE||' '||VAR_DEPT.DN||' '||VAR_DEPT.LO);
END;
%ROWTYPE类型
%ROWTYPE类型是结合了%TYPE类型与RECORD类型的特点,%TYPE类型是效仿一个字段设置数据类型,
RECORD类型是设置一行变量的数据类型,而%ROWTYPE是效仿一行字段设置变量的数据类型。
%ROWTYPE类型与RECORD类型一样本身没有确切的列数和属性,但是%ROWTYPE类型不需要单独定义,直接使用即可。
--例子(DEPT表)
DECLARE
--%ROWTYPE类型不需要声明定义,可以直接使用
VAR_DEPT DEPT%ROWTYPE;
BEGIN
  --查询数据,并将查询的数据放入变量VAR_DEPT
  SELECT DEPTNO,DNAME,LOC INTO VAR_DEPT FROM DEPT WHERE DEPTNO=10;
  --打印数据
  DBMS_OUTPUT.PUT_LINE(VAR_DEPT.DEPTNO||' '||VAR_DEPT.DNAME||' '||VAR_DEPT.LOC);
END;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值