PLSQL 错误 - 执行过程 CallableStatementCallback 时出错;

PLSQL Error - Error in Executing Procedure CallableStatementCallback;

我正在尝试从我的 Java 代码中调用下面的存储过程。

public void runProcedure(String accountId, String date, String receiverId, int seqNo) {
        final SimpleJdbcCall transactionCall = new SimpleJdbcCall(this.jdbcTemplate)
                .withSchemaName("CUSTOM")
                .withProcedureName("PROC_REPORT_STATEMENT");

        SqlParameterSource in = new MapSqlParameterSource()
                .addValue("accountId", accountId)
                .addValue("sdate", date)
                .addValue("recvID", receiverId)
                .addValue("seqNo", seqNo);
        transactionCall.execute(in);
    }

如果在 Toad 上与用户 USER1 一起执行,它会按预期工作。

但是,在我的 Java 代码中使用相同的用户 returns 出现以下错误

Error in Executing Procedure CallableStatementCallback; bad SQL grammar [{call CUSTOM.PROC_REPORT_STATEMENT(?, ?, ?, ?)}]; nested exception is java.sql.SQLException: ORA-06550: line 1, column 14:

CREATE OR REPLACE PROCEDURE CUSTOM.PROC_REPORT_STATEMENT(
accountId IN VARCHAR2,
sdate IN DATE,
recvID IN VARCHAR2,
seqNo IN NUMBER
) AS
....

我已经执行了所有要求的 here,但仍然找不到解决方案。

我不知道下一步该做什么

  1. 你的CUSTOM.PROC_REPORT_STATEMENT程序有效吗?

  2. 在您编写的 Java 代码中 .addValue("accountId", accountId) 但存储过程中的参数名称已计算在内。是不是有问题?

我从内部异常中发现它由于以下错误而失败:

ORA-06502: PL/SQL: numeric or value error: number precision too large ORA-06512

罪魁祸首:变数之一

openbal NUMBER (10,2);

过程中的一个查询试图获取一个大于声明用于保存获取结果的变量的值

我不得不把它换大一些。

openbal NUMBER (25,2);