我在oracle包中有复杂的输入/输出参数的复杂过程。我将在下面展示我的一个程序:
PROCEDURE Authorize(PO_ErrorCode OUT NUMBER,
PO_ErrorText OUT VARCHAR2,
PI_Count IN NUMBER,
PI_Setting IN Setting,
PI_InputData IN InputData,
PO_PreData OUT InputData);
并将在以下内容中显示两个结构Setting
和InputData
:
CREATE OR REPLACE TYPE Setting as object( ProviderType NUMBER
SwitchCode NUMBER)
CREATE OR REPLACE TYPE Input_Data Is Table Of MainInputData;
CREATE OR REPLACE TYPE MainInputData as object( itemId NUMBER,
itemValue NVARCHAR2(150),
itemEncyptd NUMBER,
itemEncryptKey RAW(16));
如上所述我有几个结构包含:Type
,Array
,Array of Type
和Array of Primitive
。
我通过jdbc
和oracle驱动程序以及STRUCT
&等相关类调用此函数。 ARRAY
但为此目标生成了许多复杂的代码。
我的问题是:是否有通过简单代码执行此任务的实用程序或框架?
我知道spring
有一个jdbc实用程序,但我没有经验。
答案 0 :(得分:2)
您可以使用spring实用程序。
有一个类StoredProcedure
,您可以使用sqlOutParameter
和sqlInParameter
在构造函数中声明所有输入和输出参数及其类型。
在你的情况下有3个输入参数,为了通过它你可以用3个参数覆盖execute
方法并调用
super.execute(a,b,c)
此link会有所帮助。
答案 1 :(得分:1)
我们有内部实用程序,它可以完全满足您的需求。它会生成:
Oracle Object Type
并使用eclipselink
特定注释进行扩展。在运行时eclipselink将实体实例转换为java.sql.Struct
实例,并且我们的运行时拦截对生成的java接口的调用,动态调用PL / SQL过程和函数。它还支持IN / OUT参数,并允许将PL / SQL包公开为webservices。它简化了我们的开发,我们有许多分层的Oracle对象类型。我希望它是公开的。如果您对该工具感兴趣,请与我联系。
您也可以将Oracle的jpublisher用于此目的: