2016-01-15 6 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

действительно, такой встроенный был бы хорош. –

Смежные вопросы