上一篇章 : 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。