[英]from java how to call a stored procedure passing an oracle cursor as an argument
[英]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.