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私聊。
领取专属 10元无门槛券
私享最新 技术干货