这应该是相当简单和直接的事情,但由于某种原因,我无法让它发挥作用。我像这样创建了我的SProc:
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.
指出我正确的地方可能不那么费时,但如果有人能告诉我哪里出错了可能会更有用。 :)
答案 0 :(得分:4)
你的执行语句不应该是“执行zadmit_migrate_data(4);” ?
无论如何,运行此命令:
SELECT object_name FROM user_objects WHERE status='INVALID';
会告诉您程序是否有效。
执行CREATE或REPLACE ...命令,然后立即执行命令
SHOW ERRORS
应该告诉你遇到了什么编译错误。
答案 1 :(得分:4)
如果您的Google错误ORA-06575,您会发现:
您尝试执行SQL语句 引用了PLSQL函数 处于无效状态。有时候是这样的 用函数编译时 错误。
您可以通过以下方式解决此问题:
更正错误然后重新编译 功能。然后重新执行SQL 言。
一旦你的程序编译完毕,就可以执行它:
begin
zadmit_migrate_data(4);
end;
答案 2 :(得分:1)
运行此
SQL> alter procedure zadmit_migrate_data compile;
SQL> show errors
鉴于程序简单,诊断结果错误堆栈应该不难。