如何在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();
答案 0 :(得分:1)
嗯,你必须使用列名,在这种情况下它是banner
我猜,所以试试
System.out.println(rs.getString("banner"));