在调用我的过程和语句时,我一直得到错误的参数数量或类型忽略错误。
这是我的程序
Procedure runCheck(p_runId in out number,
p_runCheck in out FSS_RUN_TABLE%rowtype) is
v_runId number := 0;
Begin
Begin
select *
into p_runCheck
from FSS_RUN_TABLE
where RUNOUTCOME = 'SUCCESS'
and Trunc(RUNEND) = Trunc(sysdate);
Exception
when NO_DATA_FOUND then
p_runId := RUNLOG_SEQ.NEXTVAL;
insert into FSS_RUN_TABLE
(RUNID, RUNSTART, RUNEND, RUNOUTCOME, REMARKS)
values
(p_runId, sysdate, null, null, 'RUN START');
End;
Exception
when others then
select RUNID
into v_runId
from FSS_RUN_TABLE
where Trunc(RUNSTART) = Trunc(sysdate);
update FSS_RUN_TABLE
set RUNEND = sysdate,
RUNOUTCOME = 'FAILED',
REMARKS = 'RUN FAILED'
where RUNID = v_runId;
End;
以下是我执行此程序的方法
Begin
PKG_FSS_SETTLEMENT.runCheck;
End;
我的FSS_RUN_TABLE内容有5列,分别是RUNID,RUNSTART,RUNEND,RUNOUTCOME,REMARKS
不明白我为什么要继续收到此错误消息?请回答任何问题,谢谢大家。
答案 0 :(得分:1)
您的程序需要参数,它们是必需的(并且您将它们声明为“输入/输出”)。
declare
l_runId number;
l_runCheck FSS_RUN_TABLE%rowtype;
Begin
PKG_FSS_SETTLEMENT.runCheck(
p_runId => l_runId,
p_runCheck => l_runCheck);
End;
但是我担心代码本身 - 你想要实现什么?为什么要分隔异常块?你可以离开那个,并管理那里的所有例外。