错误数量或类型的参数错误 oracle 表单

Posted

技术标签:

【中文标题】错误数量或类型的参数错误 oracle 表单【英文标题】:Wrong number or types of arguments error oracle forms 【发布时间】:2019-04-22 12:29:03 【问题描述】:

我在 Program Units Oracle Forms 下创建了程序

代码:

PROCEDURE VALIDATION_TEST
    (p_mid we_group_hof_k.mstatusid%TYPE,  
     p_status we_group_hof_k.cardstatus%TYPE
                       ) is
begin
  insert into test
  select mstatusid, cardstatus
   from we_group_hof_k
   where p_mid = 1
   and p_status = 'A';
end;

此过程成功执行。我把这条线放在When-Button-Pressed Trigger“TEST”Button上

VALIDATION_TEST;

当我尝试编译“TEST”按钮时,我收到以下错误:

wrong number or types of arguments in call to 'VALIDATION_TEST'

我正在使用 oracle 表单 11g。

如何解决这个问题?

【问题讨论】:

【参考方案1】:

您已经使用 两个 参数定义了您的过程。您对该过程的调用会传递 zero 参数。因此,您可以通过在调用过程时传递 两个 参数来解决此问题。

或者也许通过从过程的签名中删除参数。因为坦率地说,您的代码没有多大意义。 WHERE 子句根据硬编码值测试参数。因此,要么选择 we_group_hof_k 中的所有记录 - 如果传递的参数是 1'A' - 否则没有。

也许这就是你需要的?

PROCEDURE VALIDATION_TEST
    (p_mid we_group_hof_k.mstatusid%TYPE,  
     p_status we_group_hof_k.cardstatus%TYPE
                       ) is
begin
  insert into test
  select mstatusid, cardstatus
   from we_group_hof_k
   where mstatusid = p_mid 
   and cardstatus = p_status;
end;

然后你会这样调用你的过程:

VALIDATION_TEST(1, 'A');

虽然,由于此过程是从 Oracle Forms 调用的,因此您可能需要从 Forms 块中传入项目。但只有你自己知道。

【讨论】:

我的列具有条件,其中列不为空。如何添加VALIDATION_TEST参数 抱歉,我不确定您的意思。这与your other question 有关吗?但是,如果您的意思是要在 WHERE 子句中添加一个额外的 AND whatever IS NULL 标准,那就去做吧。您无需更改过程的签名即可。 如果我添加新参数第 3 列然后在选择命令中如何写“AND column IS NOT NULL with 3rd parameter

以上是关于错误数量或类型的参数错误 oracle 表单的主要内容,如果未能解决你的问题,请参考以下文章

从 C# 执行 Oracle 存储过程 - 调用中的参数数量或类型错误

使用 Spring Data Jpa 在 Oracle 中调用存储过程时参数的数量或类型错误

PLS-00306:调用“ADD_MONTHS”时参数的数量或类型错误

ora-06553 pls-306 调用“ogc_x”时参数的数量或类型错误

调用中的参数数量或类型错误

SQL 存储过程编译错误:调用中的参数数量或类型错误