E-Lin通用微服务平台-Oracle存储过程参数和SQL脚本参数

上一篇章 : E-Lin通用微服务平台介绍及性能比较

本篇介绍一下易联E-Lin通用微服务平台对Oracle 存储过程参数和SQL脚本规范要求,并不是所有Oracle存储过程的参数或者SQL脚本参数都支持。由于本人从事多年Oracle EBS技术开发工作,开发通常很少使用Boolean类型作为存储过程的参数或函数的参数或字段的数据类型,因此本次版本暂时不支持Boolean数据类型。由于个人时间有限,暂时不支持注册函数。 另外暂时没有找Java给RowType和自定义Record数据类型的参数赋值方法,有知道的朋友可以给我留言。

一、Oracle 存储过程参数类型
具体支持哪些Oracle存储过程参数类型?请参考如下表格内容:

自定义类型实例参考如下:

CREATE OR REPLACE TYPE Cux_Po_Ship_Lines AS OBJECT
(
  Shippment_Num  NUMBER,
  Quantity       NUMBER,
  Override_Price NUMBER
)

CREATE OR REPLACE TYPE Cux_Po_Ship_Lines_Tbl IS TABLE OF Cux_Po_Ship_Lines

CREATE OR REPLACE TYPE Cux_Po_Lines AS OBJECT
(
  Line_Num    NUMBER,
  Quantity    NUMBER,
  Price       NUMBER,
  Description VARCHAR(240),
  Ship_Lines  Cux_Po_Ship_Lines_Tbl
)

CREATE OR REPLACE TYPE Cux_Po_Lines_Tbl IS TABLE OF Cux_Po_Lines

CREATE OR REPLACE TYPE Cux_Po_Headers AS OBJECT
(
  Po_Number   VARCHAR2(80),
  Vendor_Name VARCHAR2(24),
  Description VARCHAR2(240),
  Lines       Cux_Po_Lines_Tbl,
  Line        Cux_Po_Lines
)

CREATE OR REPLACE TYPE Cux_Po_Headers_Tbl IS TABLE OF Cux_Po_Headers

create or replace type cux_str_array as varray(1000) of varchar2(40)

create or replace type CUX_PO_SHIP_ARRAY as ARRAY(10) of Cux_Po_Ship_Lines_Tbl

参考存储过程的参数实例如下:

CREATE OR REPLACE PACKAGE Cux_Po_Pkg IS
  PROCEDURE Main(p_Hdr           Cux_Po_Headers
                ,x_Hdr           OUT Cux_Po_Headers
                ,x_Return_Status OUT VARCHAR2
                ,x_Msg_Data      OUT VARCHAR2);

  PROCEDURE Process(x_Hdr_Tbl       OUT Cux_Po_Headers_Tbl
                   ,x_Return_Status OUT VARCHAR2
                   ,x_Msg_Data      OUT VARCHAR2);

  PROCEDURE Process1(p_Str_Array Cux_Str_Array
                    ,x_Str_Arry  OUT Cux_Str_Array);

  PROCEDURE Process2(p_Po_Ship_Array Cux_Po_Ship_Array
                    ,x_Po_Ship_Array OUT Cux_Po_Ship_Array);
END Cux_Po_Pkg;

注意重点自定义类型作为另一个自定义类型的类型不能超过10层。否则无法注册

二、Oracle SQL脚本.
 SQL脚本既可以不带参数也可以带参数,实例参考如下,如":1"表示参数,其数据类型与条件字段一致。若有多个参数时,则使用:1、:2、:3 ....:n 表示,其中n表示第几个参数。

SELECT * FROM DBA_TABLES WHERE Owner = :1

具体支持哪些数据类型的参数?请参考如下表格

对于Oracle EBS技术来说,在Oracle EBS系统中,执行查询有些视图之前,有些需要职责上下文初始化:

Fnd_Global.Apps_Initialize(User_Id => 0, Resp_Id => 50722, Resp_Appl_Id => 222);
Mo_Global.Set_Policy_Context('S', 1013);

或者需要初始化多组织访问:

  Mo_Global.Init('SQLAP'); --初始化Multi Org,临时表mo_glob_org_access_tmp有数据
  Mo_Global.Set_Policy_Context(p_Access_Mode => 'S', p_Org_Id => 81); --设置Org访问模式,S为单OU访问,M为多OU访问,A为所有OU访问

同样,易联E-Lin通用微服务平台也是提供这方面的支持。
注意重点:Date日期类型参数,格式是:yyyy-MM-dd HH:mm:ss

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AlanChen

您的鼓励是我创作的源泉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值