用于在oracle中调用过程的Jdbc实用程序

时间:2012-10-21 12:01:40

标签: java oracle stored-procedures jdbc utilities

我在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);

并将在以下内容中显示两个结构SettingInputData

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));

如上所述我有几个结构包含:TypeArrayArray of TypeArray of Primitive

我通过jdbc和oracle驱动程序以及STRUCT&等相关类调用此函数。 ARRAY但为此目标生成了许多复杂的代码。

我的问题是:是否有通过简单代码执行此任务的实用程序或框架? 我知道spring有一个jdbc实用程序,但我没有经验。

2 个答案:

答案 0 :(得分:2)

您可以使用spring实用程序。

有一个类StoredProcedure,您可以使用sqlOutParametersqlInParameter在构造函数中声明所有输入和输出参数及其类型。

在你的情况下有3个输入参数,为了通过它你可以用3个参数覆盖execute方法并调用

super.execute(a,b,c)

link会有所帮助。

答案 1 :(得分:1)

我们有内部实用程序,它可以完全满足您的需求。它会生成:

  • JPA实体基于Oracle Object Type并使用eclipselink特定注释进行扩展。
  • 反映PL / SQL包的Java接口。

在运行时eclipselink将实体实例转换为java.sql.Struct实例,并且我们的运行时拦截对生成的java接口的调用,动态调用PL / SQL过程和函数。它还支持IN / OUT参数,并允许将PL / SQL包公开为webservices。它简化了我们的开发,我们有许多分层的Oracle对象类型。我希望它是公开的。如果您对该工具感兴趣,请与我联系。

您也可以将Oracle的jpublisher用于此目的: