Java中调用存储过程或存储函数的方法.docVIP

  • 0
  • 0
  • 约3.34千字
  • 约 5页
  • 2021-09-26 发布于山东
  • 举报

Java中调用存储过程或存储函数的方法.doc

Java中调用存储过程或存储函数的方法. Java中调用存储过程或存储函数的方法. PAGE / NUMPAGES Java中调用存储过程或存储函数的方法. Java 中调用存储过程或存储函数的方法 .txt 机会就像秃子头上一根毛,你抓住就抓住了,抓 不住就没了。我和你说了 10 分钟的话,但却没有和你产生任何争论。那么,我们之间一定有个人变得虚伪无比!过错是短暂的遗憾,错过是永远的遗憾。相遇是缘,相知是份,相爱是约定,相守才是真爱。 1. 调用存储过程: CallableStatement clstmt = null; try { clstmt = conn.prepareCall({call package_name.procedure_name(?,?,?,?,?}; clstmt.setString(1, bill.getBillType(; clstmt.setString(2, bill.getId(; clstmt.setInt(3, bill.getNum(; clstmt.registerOutParameter(4, Types.CHAR; clstmt.registerOutParameter(5, Types.VARCHAR; clstmt.execute(; out_opresult = clstmt.getString(4.trim(; out_operror = clstmt.getString(5.trim(; } catch (SQLException e { System.out.println(e.getMessage(; } 2. 调用存储函数: CallableStatement clstmt = null; try { clstmt = conn.prepareCall({? = call package_name.function_name(?,?,?,?}; clstmt.registerOutParameter(1, Types.VARCHAR; clstmt.setString(2, bill.getBillType(; clstmt.setString(3, bill.getId(; clstmt.registerOutParameter(4, Types.CHAR; clstmt.registerOutParameter(5, Types.VARCHAR; clstmt.execute(; out_opresult = clstmt.getString(4.trim(; out_operror = clstmt.getString(5.trim(; } catch (SQLException e { System.out.println(e.getMessage(; } * 存储过程编写时应注意: 输出参数不能作为查询条件; eg: 假设, out_id 已赋值, SELECT name INTO out_name FROM tb_test WHERE id = out_id; 这样写 PL/SQL 中会正常通过,而在 Java 程序调用该存储过程时会报错,需要改成: v_id CHAR(8 := ; 先对 v_id 赋值, SELECT name INTO out_name FROM tb_test WHERE id = v_id; 这样 PL/SQL 和 Java 程序中都可正常通过和调用。 如存储过程中带有 Date 、 Boolean 型参数, Java 程序调用时会出错, 报类型不匹配,目前只能不用 Date、 Boolean 型作为存储过程参数,可能的原因: JDBC不支持。。。 测试程序如下:存储函数如下: FUNCTION my_test(in_test1 IN CHAR, in_test2 IN BOOLEAN, out_test3 OUT VARCHAR RETURN VARCHAR IS v_test CHAR(3 := ; BEGIN select aaa into v_test from dual; Return OK; EXCEPTION WHEN OTHERS THEN out_test3 := SQLCODE; Return SQLCODE; END; Java 代码如下: try { clstmt = conn.prepareCall({? = call my_test(?,?,?}; clstmt.registerOutParameter(1, Types.VARCHAR; clstmt.setString(2, 1111111; clstmt.setBoolean(3, false; clstmt.registerOut

文档评论(0)

1亿VIP精品文档

相关文档