Vérifier un enregistrement N'EST PAS NUL dans Plsql
J'ai une fonction qui permettrait le retour d'un enregistrement de type my_table%ROWTYPE
et en l'appelant, j'ai pu vérifier si le retour de l'enregistrement est nul, mais PL/SQL qui se plaint de l'if qui
PLS-00306: mauvais nombre ou les types d'arguments dans l'appel à "n'EST PAS NULL'
Voici mon code:
v_record my_table%ROWTYPE;
v_row_id my_table.row_id%TYPE := 123456;
begin
v_record := myfunction(v_row_id)
if (v_record is not null) then
-- do something
end if;
end;
function myfunction(p_row_id in my_table.row_id%TYPE) return my_table%ROWTYPE is
v_record_out my_table%ROWTYPE := null;
begin
select * into v_record_out from my_table
where row_id = p_row_id;
return v_record_out;
end myfunction;
Grâce.
source d'informationauteur Sapience | 2011-08-26
Vous devez vous connecter pour publier un commentaire.
Autant que je sache, il n'est pas possible. La vérification de la
PRIMARY KEY
ou unNOT NULL
colonne doit être suffisantes.Vous pouvez vérifier
v_record.row_id IS NULL
.Votre fonction jeter un
NO_DATA_FOUND
exception cependant, alors qu'aucun enregistrement n'est trouvé.Vous ne pouvez pas tester pour la non-existence de cette variable, il y a donc deux façons d'aller à ce sujet. Vérifier l'existence d'un seul élément. Je n'aime pas ce que cela signifie que si rien ne change votre code ne fonctionne plus. Au lieu de cela, pourquoi ne pas simplement soulever une exception quand il n'y a pas de données là:
Je me rends compte que la
others
dans l'exception est très méchant, mais il ne fera que vraiment attraper ma table en train de disparaître quand il ne devrait pas et rien d'autre.