2010-11-12 64 views
1

我正在与项目的PL/SQL开发人员合作。另一个开发人员正在编写我需要调用的存储过程。Oracle存储过程可以返回Java中可用的对象吗?

一个存储过程需要返回关于产品的一切:

名称,价格,描述,色彩, 重量,生产厂家等 - (共15条 件信息的)

我假设存储过程会接受一个I​​N参数,product-id并返回15个OUT参数。

有没有一种方法可以让存储过程返回一个可以转换为自定义数据类型的对象?这是一种典型的技术,还是通常会返回多个OUT参数?

+1

我从未喜欢在Java中检索OUT参数,更喜欢函数/ stored proc返回一个SYS_REFCURSOR并从Java中的resultset对象中拉出列。 – 2010-11-13 02:11:00

回答

3

我的选择是程序(或者如果它只是检索产品信息,函数)返回一个Java代码检索为Java.sql.STRUCT或更强烈的PL/SQL产品对象键入对象。

Oracle在其网站上提供了两种方法的示例代码。这里是java.sql.STRUCT approach的一个例子。这里是strongly typed object approach。强类型示例使用JPublisher创建强类型对象类,但JDBC Developer's Guide将引导您创建自己的映射。

+0

另一个通过JDBC工作的链接:http://www.lorentzcenter.nl/awcourse/oracle/java.920/a96654/oraoot.htm – ThinkJet 2010-11-13 17:49:15

-2

SQL查询不能以任何方式返回一个对象 你应该只返回一个选择操作的结果,那么你自己构建的对象与结果

0

的Hiberante provides a way映射一个SQL查询或存储过程的结果到一个java对象。这是一个复杂的对象关系映射解决方案,但在大多数情况下,这是值得的。