如何防止向 APEX_COLLECTION 添加重复项目

问题描述 投票:0回答:1

我想创建实验室测试订单并创建了 apex 集合, 我需要检查测试是否已经存在于集合中我需要显示消息说

测试已经存在。

我尝试过这段代码:

Declare 
v_seq_id number;
v_test_no number; 

begin 

if not apex_collection.collection_exists('TESTS') then 

apex_collection.create_collection('TESTS');
end if;

select seq_id , c001 into v_seq_id,v_test_no 
from apex_collections 
where collection_name='TESTS'
and  c001 = :P58_TEST_NO;
exception WHEN NO_DATA_FOUND 
THEN v_seq_id :=0 ; 


if v_seq_id != 0 THEN 
v_test_no := v_test_no ;
end if;
end;
apex_collection.add_member(

    p_collection_name => 'TESTS',
    p_c001 => :P58_TEST_NO , 
    p_c002 => :P58_TEST_NAME , 
    p_c003 => :P58_SECTION , 
    p_c004 => :P58_TESTPRICE , 
    p_c005 => :P58_TESTVAT , 
    p_c006 => :P58_TESTTOTAL
);

我创建了集合,然后我需要检查测试是否存在我需要阻止添加此测试 另一次并显示消息测试已经存在

 if v_seq_id != 0 THEN 
    v_test_no := v_test_no ;
    end if;
    end;

现在查看图像,它与测试重复

enter image description here

我该怎么做,提前谢谢你

oracle-apex
1个回答
0
投票

您没有提及如何调用此过程,因此我假设这是一个“保存订单”提交页面的表单,并且在“处理”部分中调用此过程。这就是“APEX方式”。

为了避免重复,只需使用源创建“无行返回”类型的验证

SELECT seq_id
  FROM apex_collections 
 WHERE collection_name='TESTS' AND
       c001 = :P58_TEST_NO;

和错误消息“测试已存在”。

然后在页面进程中只需执行对

apex_collection.add_member
的调用即可。如果验证失败,页面处理将停止,并且该页面处理将不会被执行。

© www.soinside.com 2019 - 2024. All rights reserved.