相关疑难解决方法(0)

如何使用MyBatis将Java对象列表传递给Oracle存储过程?

我已经谷歌搜索了一段时间,似乎无法找到任何真正的答案.

我有一个Oracle存储过程,它有许多in参数,其类型是表rowtype的表.例如:

在pacakge宣布:

TYPE param1_type_t IS TABLE OF table1%ROWTYPE;
TYPE param2_type_t IS TABLE OF table2%ROWTYPE;
TYPE param3_type_t IS TABLE OF table3%ROWTYPE;
Run Code Online (Sandbox Code Playgroud)

Oracle程序:

PROCEDURE my_proc
(
   parameter1    IN param1_type_t,
   parameter2    IN param2_type_t,
   parameter3    IN param3_type_t
)
Run Code Online (Sandbox Code Playgroud)

在java方面,我有3个对应的对象列表,表示用Java填充的每个参数.在这种情况下,是否可以使用MyBatis调用Oracle过程?

<update id="callOracleSP" statementType="CALLABLE">
    {CALL my_proc( #{param1, mode=IN},
                   #{param2, mode=IN},
                   #{param3, mode=IN}
                 )
    }
</update>
Run Code Online (Sandbox Code Playgroud)

对象本身是具有String和Integer属性的简单VO以及它们各自的getter和setter.

我不确定如何继续.我是否需要以某种方式将Java对象列表映射到Oracle类型?

oracle stored-procedures mybatis

8
推荐指数
1
解决办法
3万
查看次数

使用来自 0jdbc6 JDBCthin 驱动程序的自定义对象返回类型调用 Oracle PL/SQL 过程

我正在编写一些 JDBC 代码,它调用具有自定义对象返回类型的 Oracle 11g PL/SQL 过程。每当我尝试注册我的返回类型时,根据我设置的类型执行语句时,我都会收到 ORA-03115 或 PLS-00306 作为错误。一个例子如下:

PLSQL代码:

Procedure GetDataSummary (p_my_key    IN    KEYS.MY_KEY%TYPE,
                          p_recordset OUT   data_summary_tab,
                          p_status    OUT   VARCHAR2);
Run Code Online (Sandbox Code Playgroud)

更多 PLSQL 代码(自定义对象详细信息):

CREATE OR REPLACE TYPE data_summary_obj
AS
   OBJECT (data_key             NUMBER,
           data_category        VARCHAR2 (100),
           sensitive_flag       VARCHAR2 (1),
           date_created         DATE,
           date_rep_received    DATE,
           date_first_offering  DATE,
           agency_data_ref      VARCHAR2 (13),
           change_code          VARCHAR2 (120),
           data_ref             VARCHAR2 (50),
           data_status          VARCHAR2 (100),
           data_count           NUMBER)
/

CREATE OR REPLACE TYPE data_summary_tab AS TABLE OF data_summary_obj
/ 
Run Code Online (Sandbox Code Playgroud)

Java代码:

String query = "begin manageroleviewdata.getdatasummary(?, ?, ?); …
Run Code Online (Sandbox Code Playgroud)

java rdbms plsql jdbc oracle11g

3
推荐指数
1
解决办法
2万
查看次数

标签 统计

java ×1

jdbc ×1

mybatis ×1

oracle ×1

oracle11g ×1

plsql ×1

rdbms ×1

stored-procedures ×1