Oracle EBS中删除可执行、并发程序

本文详细介绍了如何在PL/SQL中调用预定义的包来删除特定的并发程序和可执行代码,包括删除程序、执行程序等关键步骤。

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


1、定义删除的包
PROCEDURE delete_parameter(program_short_name          IN VARCHAR2 ,
                         application                   IN VARCHAR2 ,
                           parameter                   IN VARCHAR2 ) is

  program_appl_id
      fnd_application.application_id% TYPE;
  program_id
        fnd_concurrent_programs.concurrent_program_id% TYPE;
  desc_flex_name
      fnd_descriptive_flexs.descriptive_flexfield_name% TYPE;
  prog_appl_short_name fnd_application.application_short_name% TYPE;

BEGIN
  message_init;

  check_notnull(program_short_name);
  check_notnull(application);
  check_notnull(parameter);

  program_appl_id := application_id_f(application);
  prog_appl_short_name := application_short_name_f(application);

  desc_flex_name := '$SRS$.'||program_short_name;

  program_id := concurrent_program_id_f(program_appl_id, program_short_name);

  -- Delete param references in request sets
  delete from fnd_request_set_program_args a
   where (a.application_id, a.request_set_id, a.request_set_program_id)
         in (select sp.set_application_id,
                     sp.request_set_id,
                     sp.request_set_program_id
               from fnd_request_set_programs sp
               where sp.program_application_id = program_appl_id
                 and sp.concurrent_program_id = program_id)
     and (a.descriptive_flex_appl_id,
          a.descriptive_flexfield_name,
          a.application_column_name) in
         ( select u.application_id,
                 u.descriptive_flexfield_name,
                 u.application_column_name
            from fnd_descr_flex_column_usages u
           where u.application_id = program_appl_id
             and u.descriptive_flexfield_name = desc_flex_name
             and u.descriptive_flex_context_code = 'Global Data Elements'
             and u.end_user_column_name = parameter);

   -- Delete the param
   fnd_flex_dsc_api.delete_segment(appl_short_name=> prog_appl_short_name,
                           flexfield_name=>desc_flex_name,
                                   context=>'Global Data Elements' ,
                           segment=>parameter);

END delete_parameter;



-- Procedure
--   DELETE_EXECUTABLE
--
-- Purpose
--   Delete a concurrent program executable.
--
-- Arguments
--   executable_short_name  - Name of the executable. (e.g. FNDSCRMT)
--   application - Application of the executable.
--                 (e.g. 'Application Object Library')
--
PROCEDURE delete_executable(executable_short_name          IN VARCHAR2 ,
                      application            IN VARCHAR2 ) is
  exec_application_id
      fnd_application.application_id% TYPE;
  exec_id
        fnd_executables.executable_id% TYPE;
  dummy varchar2( 1);

BEGIN
  message_init;

  check_notnull(executable_short_name);
  check_notnull(application);

  exec_application_id := application_id_f(application);

  BEGIN
     SELECT executable_id
       INTO exec_id
       FROM fnd_executables
       WHERE application_id = exec_application_id
       AND executable_name = executable_short_name;
  EXCEPTION
      WHEN no_data_found THEN
       println( 'Could not find executable: '||executable_short_name);
       return;
  END;

  -- Can't delete an executable if it is in use
  BEGIN
    select 'x' into dummy
      from sys.dual
     where not exists
       ( select 1
          from fnd_concurrent_programs
         where executable_application_id = exec_application_id
           and executable_id = exec_id);
  EXCEPTION
    when no_data_found then
      message( 'Error - Executable is assigned to a concurrent program.');
      RAISE bad_parameter;
  END;

  delete from fnd_executables_tl
   where executable_id = exec_id
     and application_id = exec_application_id;

  delete from fnd_executables
   where executable_id = exec_id
     and application_id = exec_application_id;

END delete_executable;

2、在PL/SQL中调用定义的包删除可执行和并发程序
BEGIN
  --
  /*fnd_program.remove_from_group(program_short_name  => 'CUXWOAMRP',
                                program_application => 'CUX',
                                request_group       => 'All MRP Reports',
                                group_application   => 'MRP');*/
  fnd_program.delete_program(program_short_name => 'CUX_SHIP_DEL', application => 'CUX' );
  fnd_program.delete_executable(executable_short_name => 'CUX_SHIP_DEL', application => 'CUX' );
  --EXCEPTION WHEN OTHERS THEN ROLLBACK;
END;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值