【问题标题】:PLS-00306: wrong number or types of arguments in call to - ErrorPLS-00306:调用中的参数数量或类型错误 - 错误
【发布时间】:2014-08-15 15:57:02
【问题描述】:

在 java 中使用 spring jdbc 调用 oracle plsql 过程时出现以下错误。

org.springframework.jdbc.BadSqlGrammarException: CallableStatementCallback; bad SQL grammar [{call "Procedure name"; nested exception is java.sql.SQLException: ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'procedure_name'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

此过程存在于模式 S1 中的包 A 下。我在模式 S2 中为此包 A 创建了一个同义词,并尝试使用 spring SimpleJdbcCall 执行此过程,模式名称为 S2,但它给了我上述错误。

但是当我在模式 S2 中使用 SqlPlus 执行这个查询时,这个过程执行得很好,这意味着这个没有授权问题。

当我使用它实际存在的模式名称 (S1) 执行相同的过程时,它也可以使用 spring-java 正常执行。

是否存在与在 Schema S2 中为此包 A 创建的同义词相关的任何问题??

我有什么遗漏吗?

【问题讨论】:

  • "我在这里遗漏了什么" - 存储过程的代码(或至少是签名)和调用存储的代码程序

标签: ora-06550


【解决方案1】:

我遇到了同样的问题,并且像您一样明确声明了参数。解决方法是另外指定:

new SimpleJdbcCall(dataSource)
    .withoutProcedureColumnMetaDataAccess()
    ...

我的假设是同义词阻止了参数推断工作,而没有真正停止它发生,因此驱动程序得出结论,存储过程不接受任何参数,因此不发送任何参数。

老问题,所以我知道这对 OP 没有帮助,但希望对某人有所帮助。

【讨论】:

  • 这对我有帮助!谢谢!
【解决方案2】:

如果没有看到您的代码(PLSQL 和 Java 端),我不得不说该过程具有您未在 Java 代码或参数名称中提供的必需参数(没有参数的默认值)过程中的名称与您在 Java 中使用的名称不匹配。

【讨论】:

    【解决方案3】:

    程序规范

    PROCEDURE procedure1(value   OUT NUMBER,
                                    userId      IN  NUMBER,
                                    returnCursor OUT PackageA.Types.cursorType);
    

    Java 代码

    SimpleJdbcCall optOutCall = new SimpleJdbcCall(dataSource)
                .withSchemaName("Schema-A")
                .withCatalogName("PackageA")
                .withProcedureName(procedure1)
                .declareParameters(new SqlOutParameter("value", Types.NUMERIC),
                                   new SqlParameter("userId", Types.NUMERIC))
                .returningResultSet("returnCursor", new UserMapper(EnumType.EMAIL, userId));
    

    这个“procedure1”存在于 Schema-B 中,但我在 Schema-A 中为这个过程创建了同义词,我正在尝试执行这个过程 使用'Schema-A'但它会引发错误,如果我在java代码中给出模式名称“Schema-B”,那么它会正确执行并返回结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多