如何从Java将表类型参数传递给oracle中的过程?

时间:2018-11-13 14:42:20

标签: java oracle

我正在尝试向oracle db中的表进行插入。但是我想发送一个列表,其中包含要插入表中的数据。我已经为SQL完成了此操作,创建了一种表类型,我想将其用作过程中的参数,就像这样:

CREATE TYPE budget IS TABLE OF LCH_Budget%ROWTYPE

过程是:

CREATE OR REPLACE PROCEDURE ORA.INSERT_BUDGET (
budgetParam budget) AS
BEGIN
INSERT INTO ORA_BANK.LCH_CHEQUES_ESCANEADO(
    LCH_DATA,
    LCH_DATA,
    LCH_DATA,
    LCH_DATA,
    LCH_DATA,
    LCH_DATA,
    LCH_DATA,
    LCH_DATA,
    LCH_DATA,
    LCH_DATA,
    LCH_DATA,
    LCH_DATA,
    LCH_DATA,
    LCH_DATA)
    SELECT * FROM budgetParam;
END;
/

这是用于ORACLE的,因此在SQL中,通过Java发送该参数,我只需要构建一个Datatable即可设置具有各自类型的字段,就像这样:

dataTable.addColumnMetadata("LCH_DATA", java.sql.Types.INTEGER);     
        dataTable.addColumnMetadata("LCH_DATA", java.sql.Types.VARCHAR);
        dataTable.addColumnMetadata("LCH_DATA", java.sql.Types.VARCHAR);
        dataTable.addColumnMetadata("LCH_DATA", java.sql.Types.VARCHAR);
        dataTable.addColumnMetadata("LCH_DATA", java.sql.Types.VARCHAR);
        dataTable.addColumnMetadata("LCH_DATA", java.sql.Types.VARCHAR);
        dataTable.addColumnMetadata("LCH_DATA", java.sql.Types.INTEGER);
        dataTable.addColumnMetadata("LCH_DATA", java.sql.Types.VARCHAR);
        dataTable.addColumnMetadata("LCH_DATA", java.sql.Types.VARCHAR);
        dataTable.addColumnMetadata("LCH_DATA", java.sql.Types.INTEGER);
        dataTable.addColumnMetadata("LCH_DATA", java.sql.Types.VARCHAR);
        dataTable.addColumnMetadata("LCH_DATA", java.sql.Types.VARCHAR);
        dataTable.addColumnMetadata("LCH_DATA", java.sql.Types.VARCHAR);
        dataTable.addColumnMetadata("LCH_DATA", java.sql.Types.VARCHAR);

所以我想复制这种为Oracle发送参数的方法,但是Oracle和SQL Server中的类型不同,我一直在寻找用于连接的jdbc上的类型,但是找不到它。

您知道替代方法吗?事实是,它将要存储大量数据,所以我不想为需要插入的每条数据从程序中调用过程。感谢您的帮助。

0 个答案:

没有答案