gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 06:42:36 25 4
gpt4 key购买 nike

如何在 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"));

关于Java:如何从 Oracle 打印存储过程数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24478480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com