【问题标题】:Can an Oracle stored procedure return an object useable in Java?Oracle 存储过程能否返回可在 Java 中使用的对象?
【发布时间】:2010-11-13 08:15:11
【问题描述】:

我正在与一位 PL/SQL 开发人员合作开发一个项目。另一个开发人员正在编写我需要调用的存储过程。

其中一个存储过程需要返回有关产品的所有信息:

名称、价格、描述、颜色、 重量、制造商等 - ( 15 总共有几条信息)

我假设存储过程将接受一个 IN 参数,即产品 ID,并返回 15 个 OUT 参数。

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

【问题讨论】:

  • 我从不喜欢在 Java 中检索 OUT 参数,更喜欢函数/存储过程返回一个 SYS_REFCURSOR 并从 Java 中的结果集对象中提取列。

标签: java oracle stored-procedures object


【解决方案1】:

我的偏好是该过程(或者如果它只是检索产品信息,一个函数)返回一个 PL/SQL 产品对象,Java 代码将其检索为 java.sql.STRUCT 或更强类型对象。

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

【讨论】:

【解决方案2】:

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

【讨论】:

    【解决方案3】:

    SQL 查询不能以任何方式返回对象 您应该只返回一个选择运算符的结果,然后用该结果自己构造一个对象

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-15
      • 2019-06-03
      • 1970-01-01
      • 2019-10-29
      相关资源
      最近更新 更多