0
如果我的數據庫中有200多個表,我應該使用%TYPE引用而不是標準數據類型嗎?我應該使用%TYPE引用代替Oracle中的標準數據類型嗎?
當我使用%TYPE與標準數據類型比較時性能下降嗎?
我是Oracle的新手,也許這個問題很基本,但我認爲這對於像我這樣的新手來說非常重要。
如果我的數據庫中有200多個表,我應該使用%TYPE引用而不是標準數據類型嗎?我應該使用%TYPE引用代替Oracle中的標準數據類型嗎?
當我使用%TYPE與標準數據類型比較時性能下降嗎?
我是Oracle的新手,也許這個問題很基本,但我認爲這對於像我這樣的新手來說非常重要。
TYPE關鍵字在編譯時解析並且對性能沒有影響。
您應該努力在可能的地方使用它,因爲它可以在您存儲的程序和對象中創建靈活性。當引用的對象發生變化並且引用它的程序使用TYPE引用時,程序會自動爲調用者提供更改 - 只需重新編譯並使用新定義即可。使用非TYPE引用時,程序可能會中斷,因爲定義的字段類型對於引用列而言變得太大。
舉例來說,如果我有一個簡單的表:
CREATE TABLE A (I1 INTEGER, C1 VARCHAR2(10));
我有一個存儲過程,從該表上寫着:
PROCEDURE P
var VARCHAR2(10);
BEGIN
SELECT C1 INTO var FROM A WHERE I1 = 1;
END;
這工作,直到您修改長度,時間列:
ALTER TABLE A MODIFY C1 VARCHAR2(20);
現在你可以從你的選擇中得到一個錯誤。
如果你寫的程序是這樣的:
PROCEDURE P
var A.C1%TYPE;
BEGIN
SELECT C1 INTO var FROM A WHERE I1 = 1;
END;
那麼你的代碼都難,因爲當你運行它甲骨文將重新編譯過程,檢測型號。
感謝您的寶貴答案! DCookie。 – PhatHV 2013-03-07 03:06:51