oracle - PL/SQL“错误数量或类型的参数”和“语句被忽略”
问题描述
在调用我的过程和语句忽略错误时,我不断收到错误数量或类型的参数。
这是我的程序
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
不明白为什么我一直收到此错误消息?请任何答案都会有帮助,谢谢大家。
解决方案
您的程序需要参数,它们是强制性的(并且您将它们声明为“输入/输出”)。
declare
l_runId number;
l_runCheck FSS_RUN_TABLE%rowtype;
Begin
PKG_FSS_SETTLEMENT.runCheck(
p_runId => l_runId,
p_runCheck => l_runCheck);
End;
但我担心代码本身——你想达到什么目的?为什么要分开异常块?您可以留下一个,并在那里管理所有异常。
推荐阅读
- octobercms - 来自前端的关系 [十月 cms]
- docker - 在 Docker 运行命令中使用 --reset 和 register 标记?
- firebase - 如何从firebase函数访问firestore
- android - 关于api的一点困惑
- mysql - 在 Xojo 中使用 Visual Basic 从数据库中查看列表
- sap - Sybase 数据库从旧的 San 存储迁移到新的 San 存储
- javascript - 使用回调选项选择新页面后,R DT数据表不保留行索引/计数器列
- javascript - 在第二个掩码上上传图像会导致在第一个掩码上上传图像
- sql - 窗口函数错误至少1组必须只依赖于输入列
- eclipse - tomcat 服务器缓冲不需要的数据