Tengo una función que devolvería un registro con tipo my_table%ROWTYPE
, y en la persona que llama, podría verificar si el registro devuelto es nulo, pero PL/SQL se queja del enunciado if queCompruebe un registro IS NOT NULL en plsql
PLS-00306: número equivocado o tipos de argumentos en call 'no es nulo'
Aquí está mi código:
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;
Gracias.
Gracias por su respuesta. ¿Es esa la única forma de verificar si un registro es nulo? Es extraño para mí que podamos asignar nulo a un registro, pero no podemos verificar si un registro es nulo. – Sapience
Por lo que yo sé, no es posible. Sin embargo, verificar la columna 'PRIMARY KEY' o' NOT NULL' debería ser suficiente. –
¡Buena solución! ¡Uso la asignación de 'NULL' para grabar y esta es la manera de comprobarlo! +1 – gavenkoa