oracle的%type簡介
%TYPE屬性
在PL/SQL中可以將變數和常量宣告為內建或使用者定義的資料型別,以引用一個列名,同時繼承他的資料型別和大小。這種動態賦值方法是非常有用的,比如變數引用的列的資料型別和大小改變了,如果使用了%TYPE,那麼使用者就不必修改程式碼,否則就必須修改程式碼。
TYPE是用於取得表或遊標中的欄位型別;這樣表的型別或者欄位修改以後,定義的變數無需修改程式碼;
v_empno SCOTT.EMP.EMPNO%TYPE;
v_salary EMP.SALARY%TYPE;
DELCARE
V_A NUMBER(5):=10;
V_B V_A%TYPE:=15;
V_C V_A%TYPE;
PL/SQL變數可以用來儲存在資料庫表中的資料。在這種情況下,變數應該擁有與表列相同的型別。例如,students表的first_name列的型別為VARCHAR2(20),我們可以按照下述方式宣告一個變數:
DECLARE
v_FirstName VARCHAR2(20);
但是如果first_name列的定義改變了會發生什麼(比如說表改變了,first_name現在的型別變為VARCHAR2(25))?那就會導致所有使用這個列的PL/SQL程式碼都必須進行修改。如果你有很多的PL/SQL程式碼,這種處理可能是十分耗時和容易出錯的。
這時,你可以使用”%TYPE”屬性而不是將變數型別硬性編碼。
例如:
DECLARE
v_FirstName students.first_name%TYPE;
通過使用%TYPE,v_FirstName變數將同students表的first_name列的型別相同(可以理解為將兩者邦定起來)。