zoukankan      html  css  js  c++  java
  • 怎样让Oracle的存储过程返回结果集

    Oracle存储过程:

    CREATE OR REPLACE PROCEDURE getcity (
      citycode     IN       VARCHAR2,
      ref_cursor   OUT      sys_refcursor /* 这个sys_refcursor类型在SYS.STANDARD包中 */
    )
    AS
    BEGIN
      OPEN ref_cursor FOR
        SELECT *
          FROM tb_city_code
         WHERE city_code = citycode;
    END;
    /
    

    Java调用代码:

    try {
              DriverManager.registerDriver (new oracle.jdbc.OracleDriver());
              Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:wjw", "sms", "sms");
    
              CallableStatement stmt = conn.prepareCall("BEGIN GETCITY(?, ?); END;");
              //CallableStatement stmt = conn.prepareCall("{ call GETCITY(?, ?) }");  //用此调用方法不能实现多行语法
    
              stmt.setString(1, "021");
              stmt.registerOutParameter(2, -10 /* OracleTypes.CURSOR = -10 */); //REF CURSOR(OracleTypes.CURSOR==-10)
              stmt.execute();
              ResultSet rs = (ResultSet) stmt.getObject(2);
              while (rs.next()) {
                System.out.println(rs.getString("CITY_NAME"));
              }
              rs.close();
              rs = null;
              stmt.close();
              stmt = null;
              conn.close();
              conn = null;
            }
            catch (SQLException e) {
              System.out.println(e.getLocalizedMessage());
            }
    
  • 相关阅读:
    Java中的国际化
    springcloud介绍
    SpringMVC之请求和响应
    JAVA坦克大战系列10-高效雷达(下)
    CF920F SUM and REPLACE
    luoguP4141 消失之物
    luoguP2843 暗杀
    luoguP5521 [yLOI2019] 梅深不见冬
    CF940E Cashback
    CF1051D Bicolorings
  • 原文地址:https://www.cnblogs.com/likeju/p/5009945.html
Copyright © 2011-2022 走看看