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

参数数量或类型错误错误oracle表单错误,oracle,plsql,oracleforms,oracle-fusion-middleware,Oracle,Plsql,Oracleforms,Oracle Fusion Middleware,我在程序单元Oracle窗体下创建了程序 代码: 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

我在程序单元Oracle窗体下创建了程序

代码:

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;
该程序成功地符合要求。当按钮按下触发“测试”按钮时,我打开了这条线

当我试图编译“测试”按钮时,我得到以下错误:

wrong number or types of arguments in call to 'VALIDATION_TEST'
我使用的是oracle forms 11g


如何解决此问题?

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

或者从过程的签名中删除参数。因为坦率地说,你的代码没有多大意义。WHERE子句根据硬编码值测试参数。因此,如果传递的参数是
1
'A'
,则选择
we\u group\u hof\u k
中的所有记录,否则不选择任何记录

也许这就是你需要的

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窗体调用的,您可能需要从窗体块传入项。但是只有你知道这一点。

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

或者从过程的签名中删除参数。因为坦率地说,你的代码没有多大意义。WHERE子句根据硬编码值测试参数。因此,如果传递的参数是
1
'A'
,则选择
we\u group\u hof\u k
中的所有记录,否则不选择任何记录

也许这就是你需要的

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窗体调用的,您可能需要从窗体块传入项。但只有您知道这一点。

我有一个条件为column不为NULL的列。如何添加验证测试参数对不起,我不知道你的意思。这与什么有关?但是,如果您的意思是想在WHERE子句中添加一个附加的
和任何空的
条件,那么就这样做。您无需更改过程的签名即可完成此操作。如果我在第3列中添加了新参数,则在select命令“如何编写”中“列不为空,带第三个参数。我有一个列,条件是列不为空。如何添加验证测试参数对不起,我不知道你的意思。这与什么有关?但是,如果您的意思是想在WHERE子句中添加一个附加的
和任何空的
条件,那么就这样做。您无需更改过程的签名即可完成此操作。如果我添加了新参数“第3列”,则在select命令“如何写入”中,第3个参数的列不为空