­

【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/

● 本系列題目來源於作者的學習筆記,部分整理自網絡,若有侵權或不當之處還請諒解

● 版權所有,歡迎分享本文,轉載請保留出處

● 題目解答若有不當之處,還望各位朋友批評指正,共同進步