【发布时间】:2010-12-16 11:44:07
【问题描述】:
这应该是相当简单直接的事情,但由于某种原因,我无法让它工作。我已经像这样创建了我的 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.
指出我哪里做对了可能会花费更少的时间,但是如果有人能告诉我哪里做错了,那可能会更有用。 :)
【问题讨论】:
-
如果我错了,请纠正我 - 在这种情况下,
else分支永远不会被击中,对吗?如果 select 语句不返回任何内容,则会引发 NO_DATA_FOUND 异常,因此我看不出拥有 else 条件的意义。 -
@Sathya - 你错了。没有任何迹象表明 PIDM 是强制性的,因此很有可能找到一条记录但在该列中有一个 NULL。
标签: sql oracle stored-procedures ora-00900