【问题标题】:Stored procedure works in Crystal Reports but does not work in SQL Developer存储过程在 Crystal Reports 中有效,但在 SQL Developer 中无效
【发布时间】:2020-06-26 06:57:54
【问题描述】:

我有一个可以在 Crystal Reports 中使用此存储过程的报表:

BEGIN "CMS"."CMS_RP_MERCHANDISE"."SP_M4_OH_ITEMS"(:MCUR, 1, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', NULL); END ;

当我尝试在 Oracle SQL Developer 中使用相同的存储过程时,我收到以下消息:

从第 2 行开始的错误命令 -
错误报告 -
ORA-06550: 第 1 行 Ì col 2543 :
PLS-00306:调用“SP_M4_OH_ITEMS”时参数的数量或类型错误
ORA-06550: 第 1 行 Ì col 2543 :
PL/SQL:语句被忽略
06550. 00000 - “第 %s 行,第 %s 列:\n%s”
*原因:通常是 PL/SQL 编译错误。
*行动:

This is stored procedure Declaration

Image from sql dev

【问题讨论】:

  • 请编辑问题并显示完整的 pl/sql minimal reproducible example
  • 调用似乎是不必要的复杂。您不需要在声明它们后立即将所有这些变量设置为 null,因为它们已经为 null。如果过程为允许为空的参数设置默认值,则可以使用更短的调用,从而减少出错的机会。一堵大写的文字很难阅读。

标签: oracle plsql oracle-sqldeveloper


【解决方案1】:

调用“SP_M4_OH_ITEMS”时参数的数量或类型错误

我猜你做错了什么。该过程有 无数 个参数,您似乎错过了一些(即您的参数太少或太多),或者您错过了它们的数据类型(例如应该是 NUMBER 但您提供了一个字符串)。

这样的程序很难调试;错误在第 1 行第 2543 列(2543?!);您不能以某种方式对其进行格式化并使其更易于阅读和维护吗?谁会向右滚动这么远?

另外,您没有发布CREATE PROCEDURE 代码;我们看到您声明了许多变量,并将它们传递给过程,但是 - 没有看到它,很难说更多。我希望你能在阅读我写的内容后设法修复它。祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-06
    • 1970-01-01
    • 2013-08-11
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多