Java:如何从Oracle打印存储过程数据

时间:2014-06-29 17:24:34

标签: java oracle11g

如何在Oracle数据库中创建System.Out.println存储过程。如您所见,存储的precedure返回数据库版本标题。现在我想在java控制台中打印该横幅。

我的存储过程是:

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代码:

      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 个答案:

答案 0 :(得分:1)

嗯,你必须使用列名,在这种情况下它是banner我猜,所以试试

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