我在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;
此过程成功完成。我把这行放在按下按钮的触发器“测试”按钮上
VALIDATION_TEST;
当我尝试编译“测试”按钮时,出现以下错误:
wrong number or types of arguments in call to 'VALIDATION_TEST'
我正在使用Oracle表格11g。
如何解决这个问题?
答案 0 :(得分:2)
您已使用两个参数定义了过程。您对该过程的调用传递了零参数。因此,您可以通过在调用过程时传递两个参数来解决此问题。
或者可以通过从过程签名中删除参数来实现。坦率地说,因为您的代码没有多大意义。 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块中的项目。但是只有您确定知道这一点。