gpt4 book ai didi

java - 从 Java 调用 Oracle 存储过程

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:28:12 33 4
gpt4 key购买 nike

我正在使用 JDBC 瘦驱动程序调用 Oracle 存储函数。
以下是代码。

class testSP 
{
public static void main (String args [])
throws SQLException, ClassNotFoundException
{
String driver_class = "oracle.jdbc.driver.OracleDriver";
String connect_string = "jdbc:oracle:thin:@xxx.xx.xx.xx:1521:xxxx";

Connection conn;

Class.forName(driver_class);
conn = DriverManager.getConnection(connect_string, "xxxx", "xxxx");

// OracleCallableStatement ocs =
// (OracleCallableStatement)conn.prepareCall(
// "{? = call acpks_stmt_gen.fn_stmt_gen(?,?,?,?,?,?)}");
CallableStatement ocs =
conn.prepareCall(
"{? = call acpks_stmt_gen.fn_stmt_gen(?,?,?,?,?,?)}");

ocs.registerOutParameter(1, java.sql.Types.ARRAY);

ocs.setString(2, "144000014");
ocs.setString(3, "RET");
ocs.setString(4, "N");
ocs.setString(5, "3");
ocs.setNull(6, java.sql.Types.DATE) ;
ocs.setNull(7, java.sql.Types.DATE);



ocs.executeUpdate();

// java.sql.ResultSet rs2 = (java.sql.ResultSet) ocs.getResultSet();

}

}

当我调用它时,我得到如下异常

Exception in thread "main" java.sql.SQLException: ORA-03115: unsupported network datatype or representation

我正在使用 Oracle 提供的瘦驱动程序 ojdbc6.jar
我在我的类(class)路径中使用它。

谢谢。

最佳答案

尝试

  ocs.setString(6, "") ;
ocs.setString(7, "");

代替

  ocs.setNull(6, java.sql.Types.DATE);
ocs.setNull(7, java.sql.Types.DATE);

利用 Oracle 中空字符串等同于 NULL 的事实。

在我当前的项目中,我遇到过类似的 NULL 问题,这些问题可以通过这种方式解决。 (是的,这很糟糕)

关于java - 从 Java 调用 Oracle 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3674841/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com