2016-01-15 49 views
1

有沒有辦法比較Oracle中自定義的記錄結構?我與=!=嘗試,但我得到的唯一的事情就是編譯時錯誤比較相同類型的記錄與=和!=

PLS-00306:錯誤的數字:在調用「=」

PLS-00306錯誤的數量或類型的參數或類型的調用參數 '!='

type my_type is record (
    a varchar2(6), 
    b varchar2(6) 
); 

rec1 my_type; 
rec2 my_type; 

begin 
    if rec1 = rec2 then 
    null; 
    end if; 

    if rec1 != rec2 then 
    null; 
    end if; 
end; 
+1

他們必須做記錄嗎?對象類型與記錄類似,除了它們是在SQL中定義的,並且它們允許地圖函數使比較更容易。 –

+0

它會更好,如果他們是記錄,但感謝提示我會仔細觀察對象類型。 – Jagger

回答

2

Per the doc:

**Record Comparisons** 
Records cannot be tested natively for nullity, equality, or inequality. These BOOLEAN expressions are illegal: 

My_Record IS NULL 
My_Record_1 = My_Record_2 
My_Record_1 > My_Record_2 

You must write your own functions to implement such tests. For information about writing functions, see Chapter 8, "PL/SQL Subprograms." 
+0

真可惜! – Jagger

+0

確實,這樣的內置會很好。 –