Sur Oracle 11gR2, j'ai créé un type d'objet PL/SQL simple. Lorsque vous essayez de comparer deux cas pour l'égalité/inégalité, je reçois une erreur PLS-00526: A MAP or ORDER function is required for comparing objects in PL/SQL
, même si le Oracle documentation indique clairement que"PLS-00526: Une fonction MAP ou ORDER est requise" lors de la comparaison d'objets pour l'égalité
If neither a
MAP
nor anORDER
method is specified, then only comparisons for equality or inequality can be performed.
Voici l'exemple PL/code SQL j'ai utilisé pour reproduire l'erreur:
create or replace type point_t is object (x number, y number);
/
declare
p1 point_t := point_t(1, 2);
p2 point_t := point_t(1, 2);
p3 point_t := point_t(2, 1);
begin
dbms_output.put_line('p1 = p1 ' || case when p1 = p1 then 'OK' else 'FAIL' end);
dbms_output.put_line('p2 = p1 ' || case when p2 = p1 then 'OK' else 'FAIL' end);
dbms_output.put_line('p3 <> p1 ' || case when p3 <> p1 then 'OK' else 'FAIL' end);
end;
/
Intéressant. Le comportement semble contredire la documentation. –