JDBC / Oracle registerOutParameter Cursor get Error

时间:2011-12-08 10:12:26

标签: java oracle jdbc cursor

我有问题从数据库中检索光标。 数据库:Oracle数据库10g企业版10.2.0.4.0版

数据库存储过程:

procedure p_dddw_Client(s_Client in csmweb.web_order_header.client_code_regional%type,
                        s_ClientRole in varchar2,
                        arr_AnyRec in out r_AnyRec);  //TYPE r_AnyRec IS REF CURSOR;

阅读Java中的存储过程:

    Connection connection = null;
    CallableStatement cs = null;
    try
    {
      connection = createConnection();
      cs = connection.prepareCall("ord_aux.p_dddw_client(?,?,?)");

          //Input parameters
      cs.setString("s_Client", "20975-A");
      cs.setString("s_ClientRole","");
      cs.registerOutParameter("arr_AnyRec",OracleTypes.CURSOR);
      cs.execute(); //ERROR 

来自数据库的错误代码在哪里是cs.execute(): ORA-03115:不支持的网络数据类型或表示

有没有人有经验如何正确或一些建议? 我有什么不对吗? 非常感谢。

1 个答案:

答案 0 :(得分:0)

我不确定这是不是问题,但是准备调用的语法是否正确?

我认为应该是:

CallableStatement stmt = 
            conn.prepareCall("{ call ord_aux.p_dddw_client(?,?,?) }"); 

我也不确定对setString的调用。我总是用数字来解决这些参数,但你所拥有的也可能是有效的,我不确定,例如:

cs.setString(1, "20975-A");
cs.setString(2,"");
cs.registerOutParameter(3,OracleTypes.CURSOR);