Form pre增删改

本文介绍了一种在数据库操作前进行预处理的触发器逻辑,包括更新、插入和删除操作的处理流程。针对不同场景,如公司预算审批流的存在检查、批名唯一性验证及数据删除条件判断等进行了详细说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PRE-UPDATE:

    elsif ( event = 'PRE-UPDATE') then
        Select count(1)
          into v_count
          from cux_budget_app_set_t bas
         where bas.company_id = :CUX_BUDGET_APP_SET_V.company_id
           and bas.app_type = '预算导入'
           and bas.set_id <> :CUX_BUDGET_APP_SET_V.set_id;
        If v_count > 0 then
          fnd_message.set_name('FND', 'FND_GENERIC_MESSAGE');
       fnd_message.set_token('MESSAGE', '机构'|| :CUX_BUDGET_APP_SET_V.company_desc ||'预算导入审批流已存在!');
      fnd_message.show;
      raise form_trigger_failure;
    End if;
      fnd_standard.set_who;
PRE-INSERT:
Declare
  v_count number;
Begin
  Select count(1)
    into v_count
    from CUX_ASSET_BAOFEI_BUDGET_IMP_T abi
   where abi.batch_name = :CUX_ASSET_BAOFEI_BUDGET_IMP_T.batch_name;
  If v_count > 0 then
    fnd_message.set_name('FND', 'FND_GENERIC_MESSAGE');
    fnd_message.set_token('MESSAGE', '导入批名:'|| :CUX_ASSET_BAOFEI_BUDGET_IMP_T.batch_name ||'已存在!');
    fnd_message.show;
    raise form_trigger_failure;
  End if;
  fnd_standard.set_who;
 
  Select CUX_ASSET_BAOFEI_BUDGET_IMP_S.Nextval
    into :CUX_ASSET_BAOFEI_BUDGET_IMP_T.batch_id
    from dual;
  Select sysdate
    into :CUX_ASSET_BAOFEI_BUDGET_IMP_T.import_date
    from dual;
  :CUX_ASSET_BAOFEI_BUDGET_IMP_T.batch_status := '请提交附件!'; 
End;

PRE-DELETE:
Declare
  v_result        varchar2(255);
  v_default_where varchar2(255);
  v_where         varchar2(255);
  v_exception exception;
 v_submit   exception;
  v_count number;
Begin

  fnd_message.set_name('FND', '此操作将所选记录,不可恢复,是否继续?');
  v_result := fnd_message.question('是', '否', null, 1, 2, 'QUESTION');
  If (v_result = 1) then
 
    GO_BLOCK('CUX_ASSET_BAOFEI_BUDGET_T');
    FIRST_RECORD;
    LOOP
      IF :CUX_ASSET_BAOFEI_BUDGET_T.SELECTED = 'Y' THEN
     
        If (nvl(:CUX_ASSET_BAOFEI_BUDGET_T.status, 'Y') in
           ('已提交', '已确认')) then
          fnd_message.debug('不能删除已提交或已确认的数据!');
          raise v_submit;
        End if;
     
        BEGIN
          Delete from cux_asset_baofei_budget_t abb
           where nvl(abb.attribute3,'-99') = nvl(:CUX_ASSET_BAOFEI_BUDGET_T.attribute3,'-99')
             and abb.asset_number = :CUX_ASSET_BAOFEI_BUDGET_T.asset_number;
        EXCEPTION
          WHEN OTHERS THEN
            ROLLBACK;
            RAISE form_trigger_failure;
        END;
      END IF;
      EXIT WHEN :system.last_record = 'TRUE';
      NEXT_RECORD;
    END LOOP;
    forms_ddl('commit');
  else
    raise v_exception;
  End if;

  go_block('CUX_ASSET_BAOFEI_BUDGET_T');
  EXECUTE_QUERY; --执行查询命令
  
Exception
 When v_submit then
    raise form_trigger_failure;
  When v_exception then
    raise form_trigger_failure;
  when others then
    fnd_message.debug(:CUX_ASSET_BAOFEI_BUDGET_T.asset_number || ' 删除失败!');
    raise form_trigger_failure;
End;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值