PL/SQL中的%ROWTYPE和%TYPE的区别是什么?

Q

题目

PL/SQL中的%ROWTYPE和%TYPE的区别是什么?

A

答案

%TYPE是定义一个变量,其数据类型与已经定义的某个数据变量的类型相同,或者与数据库表的某个列的数据类型相同,其使用示例如下所示:

DECLARE

V_SAL NUMBER(7) ;

V_ENAME EMP.ENAME%TYPE;

V_HIREDATE EMP.HIREDATE%TYPE;

BEGIN

SELECT SAL,ENAME,HIREDATE INTO V_SAL,V_ENAME,V_HIREDATE FROM EMP WHERE EMPNO = 7369;

INSERT INTO EMP(EMPNO,ENAME) VALUES(1111,'LHR');

UPDATE EMP SET SAL = 2000 WHERE EMPNO= 1010;

DELETE EMP WHERE EMPNO = 1012;

COMMIT;

DBMS_OUTPUT.PUT_LINE(V_SAL || ',' || V_ENAME || ',' || V_HIREDATE);

END;

关于%ROWTYPE,需要了解以下内容:

 %ROWTYPE返回的是一个记录类型,其数据类型和数据库表的数据结构一致。

 声明的变量对应于数据库表或视图中列的集合。

 在%ROWTYPE之前加上数据库表名。

 记录内字段名和数据类型与参照表或视图中的列相同。

具体而言,%ROWTYPE有如下优点:

 可以不必知道数据库中列的数量和类型。

 在运行期间,数据库中列的数量和类型可能发生变化,但是却不用修改代码。

 在SELECT语句中使用该属性可以有效地检索表中的行。

%ROWTYPE使用示例如下所示:

DECLARE

V_EMP EMP%ROWTYPE;

BEGIN

SELECT * INTO V_EMP FROM EMP WHERE EMPNO = 7521;

DBMS_OUTPUT.PUT_LINE(V_EMP.EMPNO || ',' || V_EMP.ENAME);

END;

--------现有课程-------

详细内容可以添加麦老师微信或QQ私聊。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181127A00FY000?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券