Это должно быть что-то довольно простое и прямолинейное, но по какой-то причине я не могу заставить его работать. Я создал свой SProc так:Вызов хранимой процедуры в Oracle
create or replace procedure zadmit_migrate_data (zadmit_seq_no number)
is
thisPIDM number;
begin
select pidm into thisPIDM
from saturn.zadmit_core_data
where pk_seqno = zadmit_seq_no;
if thisPIDM is not null then
dbms_output.put_line('thisPIDM is NOT null!');
else
dbms_output.put_line('thisPIDM is null!');
end if;
end zadmit_migrate_data;
И теперь я пытаюсь вызвать его, как это:
call zadmit_migrate_data(4);
И тогда я получаю эту ошибку:
ORA-06575 Package or function is in an invalid state.
Так Я пробовал:
execute zadmit_core_data(4);
И вместо этого получить эту ошибку:
ORA-00900 Invalid SQL statement.
Это может быть меньше времени, чтобы указать, где я буду в порядке, но если кто-нибудь может сказать мне, где я буду неправильно, что, вероятно, будет более полезным. :)
Исправить меня, если я ошибаюсь, но - в этом случае ветка 'else' никогда не будет удачной? Если оператор select ничего не возвращает, тогда будет вызвано исключение NO_DATA_FOUND, поэтому я не вижу смысла иметь условие else. – Sathya
@ Сатья - ты ошибаешься. Нет ничего, что указывало бы на то, что PIDM является обязательным, поэтому вполне возможно найти запись, но в этом столбце есть NULL. – APC
@APC - Gotacha! – Sathya