如何在jdbc中执行oracle程序
Posted
技术标签:
【中文标题】如何在jdbc中执行oracle程序【英文标题】:how to execute oracle procedure in jdbc 【发布时间】:2019-08-18 13:18:11 【问题描述】:我是 java jdbc 的新手。我尝试在 java 中运行以下 oracle plsql 查询,但我无法获得我不知道如何执行的结果。如何运行以下 sql 代码。如何在 jdbc 中执行以下过程。请不要评判我,我是新人
declare
o_claim number;
o_error number;
begin
bss_ln.bss_claim(o_claim => o_claim,
o_error => o_error,
i_card => ?,
i_phone =>?,
i_product=>?);
end;
【问题讨论】:
您需要使用CallableStatement
这些可能有用:docs.oracle.com/javase/tutorial/jdbc 和docs.oracle.com/javase/7/docs/api/java/sql/… 第一个是使用 JDBC 的 Java 线索,第二个是用于 CallableStatement 的 API。我相信快速搜索 Stack Overflow 会显示大量示例
能否请您广泛解释一下。例如,我如何在这个过程中编写 plsql 的变量?
在这种情况下,我无法提供更多帮助,然后为您指明正确的方向,自从我使用 JDBC 以来已经很长时间了,我建议搜索 SO 等或互联网上的教程,因为它们将能够显示最新的语法等。这些来自我经常使用的来源:baeldung.com/java-jdbc 和 mkyong.com/jdbc/…
谢谢先生,我找到了我需要的答案,非常感谢
@MaksimVasilovich 能否请您使用“添加答案”按钮发布您找到的答案,然后接受它以供遇到相同问题的所有人查看和使用,在此先感谢。
【参考方案1】:
ConnectionManager mgr = ConnectionManager.getInstance();
OracleConnection conn = mgr.getConnection(connectionLabel);
CallableStatement cstmt = conn.prepareCall(" call bss_ln.bss_claim(?, ?, ?, ?, ?) ");
// prepare output params
cstmt.registerOutParameter(1, java.sql.Types.NUMBER);
cstmt.registerOutParameter(2, java.sql.Types.NUMBER);
// prepare input params
cstmt.setString(3, "input param");
cstmt.setString(4, "input param");
cstmt.setString(5, "input param");
cstmt.executeUpdate();
// get result
int o_claim = cstmt.getInt(1);
int o_error = cstmt.getInt(2);
// close cursor
cstmt.close();
【讨论】:
谢谢先生,您的回答是正确的。但很遗憾,我不能为您的问题投票,对此感到抱歉【参考方案2】:你也可以从我的书的代码示例(第 6 章到第 9 章)中获得启发(没有广告,只是分享代码)@http://download.oracle.com/technology/tech/java/jsp/pdf/Code_depot.zip。
【讨论】:
这是一个链接答案。请在您的答案中添加一些相关代码。链接死了,然后你的答案就没有多大用处了。以上是关于如何在jdbc中执行oracle程序的主要内容,如果未能解决你的问题,请参考以下文章
如何在 java 中使用 jdbc 为 oracle 10g 执行 log miner PL/SQL 查询
如何在 oracle 11 中使用 JDBC 4 驱动程序?