`

FND_MESSAGE_PUB.get及error_handler.get_message用法

 
阅读更多

1. FND_MESSAGE_PUB.get用法,调用标准API时,抓取错误信息时可以用到,如导入供应商API:IBY_EXT_BANKACCT_PUB

DECLARE
  x_msg_count NUMBER;

  x_msg_data  VARCHAR2(3000);

  v_msg_index_out NUMBER;
  v_data          VARCHAR2(1000);
BEGIN

  fnd_message.set_name('IBY', 'IBY_UNIQ_ACCOUNT');--设置消息名称
  fnd_message.set_name('IBY', 'test');
  fnd_msg_pub.add;--添加到Global Area

  fnd_message.set_name('FND', 'AFDICT- DATABASE STATS');--设置消息名称
  fnd_message.set_token('UPDATES', 'dragon123');--设置消息内容中变量的值
  fnd_message.set_token('INSERTS', 'dragon321');--设置消息内容中变量的值
  fnd_msg_pub.add;--添加到Global Area

--当x_msg_count 为1时,直接输出x_msg_data,否则需要循环输出
  fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
                            p_count   => x_msg_count,
                            p_data    => x_msg_data);

  dbms_output.put_line('x_msg_count:' || x_msg_count);
  dbms_output.put_line('x_msg_data:' || x_msg_data);

  FOR k IN 1 .. x_msg_count LOOP
    fnd_msg_pub.get(p_msg_index     => k,
                    p_encoded       => fnd_api.g_false,
                    p_data          => v_data,
                    p_msg_index_out => v_msg_index_out);
 dbms_output.put_line('(' || v_msg_index_out || ')->' || v_data);
  END LOOP;
  fnd_msg_pub.delete_msg();

  --app_exception.raise_exception;
END;

2. error_handler.get_message用法,调用BOM导入API时,抓取错误信息

IF x_msg_count > 0 THEN
    FOR l_index IN 1 .. x_msg_count LOOP
      IF l_index>0 THEN
      DECLARE
        x_index VARCHAR2(10);
        x_msg_data_tmp VARCHAR2(2000);
        x_entity_id VARCHAR2(10);
        x_message_type VARCHAR2(10);
      BEGIN
        error_handler.get_message
                     (x_entity_index => x_index,
                      x_message_text => x_msg_data_tmp,
                      x_entity_id    => x_entity_id,
                      x_message_type => x_message_type);
     --   dbms_output.put_line(l_index||':'||x_index);
     dbms_output.put_line(l_index||x_entity_id||':'||x_msg_count);
        x_msg_data := x_msg_data || x_msg_data_tmp;

        FOR i IN 1 .. round(length(x_msg_data_tmp) / 255) + 1 LOOP
          dbms_output.put_line(substr(x_msg_data_tmp, (i - 1) * 254, 254));
        END LOOP;
      END;
      END IF;
    END LOOP;

  END IF;

3. error_handler.get_message_list用法

x_message_list  error_handler.error_tbl_type;

error_handler.get_message_list(x_message_list => x_message_list);
      FOR i IN 1 .. x_message_list.COUNT LOOP
        dbms_output.put_line('BO Identifier   : ' || x_message_list(i)
                             .bo_identifier);
        dbms_output.put_line('Organization ID : ' || x_message_list(i)
                             .organization_id);
        dbms_output.put_line('Entity ID       : ' || x_message_list(i)
                             .entity_id);
        dbms_output.put_line('Message Text    : ' ||
                             substr(x_message_list(i).message_text, 1, 200));
        dbms_output.put_line('Entity Index    : ' || x_message_list(i)
                             .entity_index);
        dbms_output.put_line('Message Type    : ' || x_message_list(i)
                             .message_type);
        dbms_output.put_line('Table Name      : ' || x_message_list(i)
                             .table_name);
        dbms_output.put_line('Row Identifier  : ' || x_message_list(i)
                             .row_identifier);
      END LOOP;
     

分享到:
评论

相关推荐

    fnd_message

    FND_MESSAGE.SET_NAME('FND', 'FLEX_COMPILE_ERROR'); FND_MESSAGE.SET_TOKEN('PROCEDURE', 'TRANS_PROC_NAME', TRUE); FND_MESSAGE.ERROR; -- 然后要么引发 FORM_TRIGGER_FAILURE 异常,要么退出当前例程 ``` ...

    Oracle Form开发--Form消息提示

    今天学到在系统中定义的消息不仅可以当作普通的消息来引用展示(如文章以下所有内容),还可以把它当作一个固定变量来使用 ,通过使用FND_MESSAGE.SET_NAME和FND_MESSAGE.GET。 例如以下代码是把系统中定义的GME_...

    Oracle ERP_EBS常用表表名

    * fnd_flex_value_sets * fnd_flex_values * fnd_flex_values_vl ----弹性域 * fnd_id_flexs * fnd_id_flex_structures where id_flex_code=""GL#"" * fnd_id_flex_segments where id_flex_code=""GL#"" and id...

    FND_SE_FPGAVHDL_

    标题"FND_SE_FPGAVHDL_"所暗示的是一个与FPGA(Field-Programmable Gate Array)相关的项目,其中使用了VHDL(VHSIC Hardware Description Language)语言进行设计。VHDL是一种用于电子设计自动化(EDA)的硬件描述...

    ORACLE_EBS常用表查询语句1

    查询用户角色及其关联的功能,可以使用`FND_USER_ROLE_PROFILE`和`FND_FUNCTION`表: ```sql SELECT urp.role_name, f.function_name FROM fnd_user_role_profile urp, fnd_function f WHERE urp.user_id = '...

    FND_TEST.zip_practice

    在电子设计自动化(EDA)领域,Verilog是一种广泛使用的硬件描述语言(HDL),用于描述数字系统的逻辑行为和结构。这个“FND_TEST.zip_practice”压缩包包含了一个名为“FND_TEST.v”的Verilog源代码文件,显然是...

    EBS_FND_单据序列和序列分配API开发

    Oracle E-Business Suite (EBS) 是一种广泛使用的集成商业应用软件套件,它提供了包括财务、供应链、项目管理和人力资源在内的多种业务管理功能。单据序列管理是EBS中用于生成和分配文档编号的一个重要模块,确保在...

    Oracle Forms&Reports开发

    例如,你可以使用FND_MESSAGE.ADD_MESSAGE和FND_MESSAGE.SHOW_MESSAGES来添加和显示消息。 5. **应用场景**: Oracle Forms & Reports广泛应用于Oracle EBS中的各种业务流程,如财务管理、库存管理、采购和销售...

    oracle语句查询

    SELECT A.RESPONSIBILITY_NAME, B.PROMPT, F.USER_CONCURRENT_PROGRAM_NAME FROM FND_RESPONSIBILITY_VLA, FND_MENU_ENTRIES_VLB, FND_FORM_FUNCTIONS_VLC, FND_REQUEST_GROUPSD, FND_REQUEST_GROUP_UNITSE, FND_...

    Oracle Compile

    `ConcurrentRequest:`部分的命令`$FND_TOP/bin/FNDLOADapps/apps0YDOWNLOAD@FND:patch/115/import/afcpprog.lctC_CUX_CREDIT_DEBIT_DETAIL.ldt`展示了如何使用FNDLOAD工具来加载或更新一个名为`C_CUX_CREDIT_DEBIT_...

    Oracle报表经典语句

    - **视图**:使用视图`FND_CONCURRENT_PROGRAMS_VL`和`FND_EXECUTABLES_VL`来简化查询操作。 ##### 3. 查找在标准请求组里提交的报表所在的职责 这段SQL语句用于查找在标准请求组中提交的报表所在的职责。 ```sql...

    Oralce 触发器

    --创建触发器 create or replace trigger trigger_customerLink before insert on customerLink_table for each row when (new.id is null) begin select seq_link_id.nextval into:new.id from dual;...

    form builder develop

    2.1 `FND_MESSAGE`的使用 - 客户端程序:在用户界面显示消息,通常用于交互式反馈。 - 服务器端程序:在后台处理中使用,可能涉及数据验证或业务逻辑。 通过`FND_MESSAGE`,开发者可以方便地处理各种消息类型,如...

    FND.zip_IAR embedded source_startrzh_supposeztu_zip

    标题"FND.zip_IAR Embedded Source_startrzh_supposeztu_zip"揭示了这是一份与IAR嵌入式开发相关的源代码压缩包,主要用于STM32F10x系列微控制器。描述"Controlling a FND Source"暗示了这个代码可能涉及到对某种...

    EN_ITIL4_FND_考试样卷答案及解析.pdf

    ITIL4是该框架的最新版本,引入了更现代化的方法来适应敏捷和DevOps等新兴实践。EN_ITIL4_FND_考试是评估考生对ITIL4基础概念理解的认证考试。这份样卷答案及解析旨在帮助考生准备考试,理解每个问题背后的逻辑和...

    EBS获取用户的密码.zip

    Oracle EBS(Enterprise Business Suite)是一款...了解并正确使用这个工具,可以帮助EBS系统的管理员更好地管理和维护用户账户的安全,同时也要时刻记住保护用户数据的重要性,遵循最佳安全实践,防止敏感信息的滥用。

    OracleEBSFlexField弹性域技术专题

    OracleEBSFlexField弹性域技术专题

    Oracle Forms开发常用技巧

    熟悉FND_REQUEST.SUBMIT_REQUEST的参数及FND_MESSAGE包的使用,可以帮助开发者更高效地实现并发请求的提交和错误处理,从而提升整个应用的性能和稳定性。 此外,开发者还应该关注Oracle Forms的其他高级特性,如...

    csv文件上传数据库[1].pdf

    6. **获取文件ID**: 使用`fnd_gfm.get_file_id`获取已上传文件的ID,将其赋值给`l_gfm_id`,然后将该ID绑定到页面的`GFM_ID`字段。 7. **解析文件名**: 从`fnd_lobs`表中选取文件ID为`l_gfm_id`的记录,提取出实际...

Global site tag (gtag.js) - Google Analytics