我想创建实验室测试订单并创建了 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;
现在查看图像,它与测试重复
我该怎么做,提前谢谢你
您没有提及如何调用此过程,因此我假设这是一个“保存订单”提交页面的表单,并且在“处理”部分中调用此过程。这就是“APEX方式”。
为了避免重复,只需使用源创建“无行返回”类型的验证
SELECT seq_id
FROM apex_collections
WHERE collection_name='TESTS' AND
c001 = :P58_TEST_NO;
和错误消息“测试已存在”。
然后在页面进程中只需执行对
apex_collection.add_member
的调用即可。如果验证失败,页面处理将停止,并且该页面处理将不会被执行。