Java: How to print stored procedure data from Oracle

泪湿孤枕 提交于 2020-01-05 13:12:49

问题


How to System.Out.println stored procedure witch i have created in Oracle database. As you can see, stored precedure returns database version banner. Now i want to print that banner in java console.

My stored procedure is:

CREATE OR REPLACE PROCEDURE getVersion (out_cursor OUT SYS_REFCURSOR)
AS
BEGIN
   OPEN out_cursor FOR SELECT * FROM V$VERSION;
EXCEPTION
   WHEN NO_DATA_FOUND
   THEN
      DBMS_OUTPUT.put_line (SQLERRM);
   WHEN OTHERS
   THEN
      DBMS_OUTPUT.put_line (SQLERRM);
END getVersion;

Java code:

      System.out.println("Connecting to a selected database...");
      conn = DriverManager.getConnection(DB_URL, USER, PASS);
      System.out.println("Connected database successfully...");

      //CREATE procedure
      Statement stmtpr = conn.createStatement();
      // Create the stored function
      stmtpr.execute("CREATE OR REPLACE PROCEDURE getVersion (out_cursor OUT SYS_REFCURSOR) AS BEGIN OPEN out_cursor FOR SELECT * FROM V$VERSION; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.put_line (SQLERRM); WHEN OTHERS THEN DBMS_OUTPUT.put_line (SQLERRM);END getVersion;");
      // Close the statement
      System.out.println("PROCEDURE created!!! ");
      stmtpr.close();

      //Execute a query
      System.out.println("Creating statement...");
      CallableStatement stmtpro = conn.prepareCall("BEGIN getVersion(?); END;");
      stmtpro.registerOutParameter(1, OracleTypes.CURSOR);
      stmtpro.execute();
      ResultSet rs = ((OracleCallableStatement) stmtpro).getCursor(1);
      while (rs.next()) {
        System.out.println(rs));    //How to print BANNER data
      }

      rs.close();
      stmtpro.close();
      conn.close();

回答1:


Well you have to use column name, in this case it is banner I guess, so try as

System.out.println(rs.getString("banner"));


来源:https://stackoverflow.com/questions/24478480/java-how-to-print-stored-procedure-data-from-oracle

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!