繁体   English   中英

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

[英]Java: How to print stored procedure data from Oracle

我如何在Oracle数据库中创建System.Out.println存储过程。 如您所见,存储的过程返回数据库版本标语。 现在,我想在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();

好吧,您必须使用列名,在这种情况下,我猜它是banner ,因此请尝试

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM