`

在PL/SQL中调用Oracle ERP请求(一)-提交单个请求

阅读更多

      最近开发一个从PLM系统中通过工作流程向ORACLE ERP系统中导入项目信息的程序,Oracle ERP系统有独立的请求模块,所以这样我们只需调用到ERP模块中的请求即可,由于PLM系统用的是windchill,底层代码是JAVA程序,并且从PLM系统中导出的数据需要经过验证后才能正式导入ERP,所以采用了使用JAVA调用存储过程的方式,过程为:

      1. PLM导出文件流数据;

      2. PLM系统导出数据导入Oracle ERP系统中临时表;

      3. 验证临时表中数据;

      4. 临时表导入ERP接口表;

      5. 提交单个请求或请求集。

 

       下面是如何提交单个请求代码,希望对大家有帮助。网络上有些文章在对参数是否作为子请求提交解释有错误,大家在使用时建议多看一下Oracle官方文档,以免使用过程中造成错误。

 

PROCEDURE prc_do_import_request(prm_org     IN NUMBER,
                                  prm_appcode OUT NUMBER,
                                  prm_appmsg  OUT VARCHAR2) IS
    custom_exception EXCEPTION;
    success        BOOLEAN;
    v_request_id   NUMBER;
    v_phase        VARCHAR2(30);
    v_status       VARCHAR2(30);
    v_dev_phase    VARCHAR2(30);
    v_dev_status   VARCHAR2(30);
    v_message      VARCHAR2(1000);
    v_request_flag BOOLEAN;
    v_start_time   VARCHAR2(30);
  BEGIN
    prm_appcode := 0;
    --初始化设置
    fnd_global.apps_initialize(user_id      => global_user_id,--用户ID
                               resp_id      => global_resp_id,          --责任ID  
                               resp_appl_id => global_resp_appl_id);   --应用ID
    --设置打印参数
    success := fnd_request.set_print_options(printer => global_printer,
                                             style   => global_style,
                                             copies  => global_copies);
    IF NOT success THEN
      RAISE custom_exception;
    END IF;
    v_start_time := to_char(SYSDATE, 'DD-MON-YYYY HH24:MI:SS');
    --调用请求
    v_request_id := fnd_request.submit_request('INV',   --应用
                                               'INCOIN',                  --程序
                                               '',                              --程序说明
                                               v_start_time,               --开始时间
                                               FALSE,                        --是否作为子请求提交,该请求如果是被其它请求调用设为TRUE,否则为FALSE
                                               prm_org,                    --自定义参数1:组织机构
                                               '1',                             --自定义参数2 :
                                               '1',                             --自定义参数3:
                                               '1',                             --自定义参数4:
                                               '1',                             --自定义参数5:
                                               '1',                             --自定义参数6:
                                               '1',                             --自定义参数7:
                                               chr(0));                       --结束标识
    IF v_request_id = 0 THEN
      RAISE custom_exception;
    ELSE
      COMMIT;
    END IF;
    --等待
    v_request_flag := fnd_concurrent.wait_for_request(request_id => v_request_id,--返回的请求ID
                                                      INTERVAL   => 5,                                     --重复检测时间差
                                                      max_wait   => 0,                                       --最长等待时间,0为一直等待  
                                                      phase      => v_phase,                                                          
                                                      status     => v_status,
                                                      dev_phase  => v_dev_phase,
                                                      dev_status => v_dev_status,
                                                      message    => v_message);
    IF v_request_flag THEN
      IF v_dev_status = 'NORMAL' THEN
        NULL;
      ELSE
        RAISE custom_exception;
      END IF;
    ELSE
      RAISE custom_exception;
    END IF;
  EXCEPTION
    WHEN custom_exception THEN
      prm_appcode := -1;
      prm_appmsg  := '错误提示:导入ERP正式表出错!' || SQLERRM;
    WHEN OTHERS THEN
      prm_appcode := -1;
      prm_appmsg  := '错误提示:导入ERP正式表出错!' || SQLERRM;
  END prc_do_import_request;
 

 

 

 

 

 

分享到:
评论

相关推荐

    oracle10g_pl/sql

    Oracle 10g PL/SQL 是Oracle数据库系统中用于创建和管理存储过程、函数、触发器等数据库对象的编程语言。本教程旨在为初学者提供一个全面的学习平台,同时也为经验丰富的开发者提供参考资料。PL/SQL是Oracle特有的...

    Oracle PL/SQL实战(待续)

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据处理能力与PL的程序设计特性,是Oracle数据库系统中用于创建存储过程、函数、触发器和包的主要工具。在这个"Oracle PL/SQL实战(待续)"的主题中,我们将深入...

    pl/sql最新中文手册

    PL/SQL是Oracle数据库系统中的一个关键组成部分,它是一种过程化语言,专为数据库操作设计。这个"PL/SQL最新中文手册"显然是一份详细解释PL/SQL 7.0版本的指南,对于学习和精通Oracle数据库编程至关重要。以下是手册...

    ORACLE PL/SQL从入门到精通

    ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括触发器、过程、函数、软件包、异常处理、游标、循环、分支、变量使用、数据库安装等关键知识点。 触发器是数据库中用来保证数据...

    oracle 9i pl/sql程序设计笔记

    **标题与描述**:本文档围绕“Oracle 9i PL/SQL程序设计笔记”这一核心主题,深入探讨了PL/SQL语言的基础知识及其在Oracle 9i数据库环境中的应用。 **关键词**:Oracle 9i、PL/SQL #### PL/SQL程序结构详解 **2.1...

    PL/SQL不安装Oracle连接数据库

    PL/SQL不安装Oracle连接数据库 1、下载instantclient-basic-win32-11.2.0.1.0此为压缩包,解压就行(路径如:D:\oracle\instantclient\instantclient).解压的路径自行调整 2、新建tnsnames.ora文件,路径如(D:\...

    PL/SQL Developer 远程连接Oracle数据库

    远程连接Oracle数据库是PL/SQL Developer的一项关键功能,允许用户在本地计算机上操作和管理远程服务器上的数据库,这对于分布式系统开发和远程协作尤其重要。 在使用PL/SQL Developer进行远程连接时,首先需要了解...

    一个对数据库的操作工具PL/SQLpl/sqL工具

    1. **编程能力**:PL/SQL允许编写包含控制结构(如循环、条件语句)和异常处理的程序块,这些块可以存储在数据库中并按需调用,提高了数据库应用的灵活性和复杂性。 2. **数据处理**:通过PL/SQL,用户可以直接对...

    Oracle PL/SQL程序设计(第5版)(上下册)

    《Oracle PL/SQL程序设计(第5版)》是一本全面介绍Oracle 11g中PL/SQL特性的书籍,适合数据库开发人员、管理员及相关从业人员阅读。本书不仅覆盖了PL/SQL的基础知识,还包括了大量的实战经验和高级主题,对于想要深入...

    Oracle PL/SQL专家指南-高级PL/SQL解决方案的设计与开发

    《Oracle PL/SQL专家指南-高级PL/SQL解决方案的设计与开发》是一本深入探讨Oracle数据库中的PL/SQL编程的专业书籍。PL/SQL是Oracle数据库特有的编程语言,它结合了SQL的查询能力与过程式编程语言的功能,使得数据库...

    oracle pl/sql从入门到精通 配套源代码

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL(结构化查询语言)的数据库操作功能与PL/SQL的程序设计特性,广泛应用于Oracle数据库的开发和管理。这本书"Oracle PL/SQL从入门到精通"的配套源代码,显然是为了...

    PL/SQL中文包

    PL/SQL是Oracle数据库系统中的一个编程语言,用于在数据库中执行复杂的业务逻辑和数据处理。这个"PL/SQL中文包"显然是为了帮助中国用户更好地理解和使用PL/SQL而设计的,它可能包含了中文版的文档、教程、错误消息...

    Oracle PL/SQL 实例精解(第4版涵盖Oracle 11g)+源码脚本

    Oracle PL/SQL是一种强大的编程语言,它将关系数据库的强大功能与结构化编程的优点结合在一起,是Oracle数据库系统中不可或缺的一部分。在"Oracle PL/SQL 实例精解(第4版涵盖Oracle 11g)+源码脚本"中,读者可以深入...

    PL/SQL User's Guide and Reference (官方CHM)

    PL/SQL, Oracle's procedural extension of SQL, is an advanced fourth-generation programming language (4GL). It offers modern features such as data encapsulation, overloading, collection types, ...

    Oracle Database 12c PL/SQL开发指南 实例源代码

    在"Oracle Database 12c PL/SQL开发指南(第7版)"这本书中,作者深入浅出地介绍了如何使用PL/SQL进行数据库开发。这本书涵盖了许多关键知识点,包括但不限于: 1. **PL/SQL基础**:PL/SQL的基础语法,如变量声明、...

    oracle pl/sql fundamentals

    Oracle PL/SQL Fundamentals是Oracle University为学生设计的一份培训指南,旨在深入理解并掌握Oracle数据库中的PL/SQL编程基础。PL/SQL是Oracle数据库特有的结构化查询语言扩展,它结合了SQL的强大功能与过程性编程...

    Oracle PL/SQL程序设计(第5版)(套装上下册)

    《Oracle PL/SQL程序设计(第5版)(套装上下册)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何...

    oracle pl/sql 实例精解(中文原书第4版)

    本书是一本逐步分解的,详尽的pl/sql编程教程,使用真实场景的试验、范例和练习来介绍读者所需的pl/sql编程技能,涵盖oracle 11g的最新特性。作者的写作手法源自于在哥伦比亚大学教授pl/sql编程技术的经验,深度...

    oracle 中 pl/sql 只是学习方法

    Oracle中的PL/SQL是一种强大的编程语言,它是Oracle数据库与应用程序之间的桥梁,专为数据库操作而设计。PL代表“过程化语言”(Procedural Language),SQL则是“结构化查询语言”(Structured Query Language)。...

    精通Oracle 10g SQL和PL/SQL

    sql是关系数据库的基本操作语言 它是应用程序与数据库进行交互操作的接口 pl/sql是oracle特有的编程语言 它不仅具有过程编程语言的基本特征 循环 条件分支等 而且还具有对象编程语言的高级特征 重载 继承等 ...

Global site tag (gtag.js) - Google Analytics