【DB筆試面試443】PL/SQL中的%ROWTYPE和%TYPE的區別是什麼?
- 2019 年 10 月 11 日
- 筆記
PL/SQL中的%ROWTYPE和%TYPE的區別是什麼?
答案
%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;
About Me:小麥苗
● 本文作者:小麥苗,只專註於數據庫的技術,更注重技術的運用
● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/
● 本系列題目來源於作者的學習筆記,部分整理自網絡,若有侵權或不當之處還請諒解
● 版權所有,歡迎分享本文,轉載請保留出處
● 題目解答若有不當之處,還望各位朋友批評指正,共同進步