[英]How to execute a procedure with JDBC
这是我的功能:
public static void execute_delete_on_db(String pass, String login, String port,
String host, String table_name, String file_path) throws Exception {
Class.forName("oracle.jdbc.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@//"
+ host + ":" + port + "/xe", login, pass);
PreparedStatement statement = null;
Statement stmt = null;
String query = "delete from AA_ALL";
stmt = conn.createStatement();
stmt.executeQuery(query);
sql_statement.close();
conn.commit();
conn.close();
}
至少这是我职能中最重要的部分。 上面的代码工作正常。 我试图通过调用这个 sql 语句来执行我的程序:
EXECUTE delete_all_rows_from_table('all');
在 Java 中它看起来像这样:
String query = "EXECUTE delete_all_rows_from_table('all')";
在数据库上它工作正常,但在 Java 中这给了我错误。 你能告诉我我做错了什么吗?
你可以call
你的过程而不是像这样执行它:
String query = "{call delete_all_rows_from_table(?)}";
CallableStatement statement = connection.prepareCall(query);
statement.setString(1, "all");
statement.execute();
您可以在此处了解更多信息: JDBC CallableStatement – 存储过程 OUT 参数示例和JDBC 存储过程
请注意,如果该过程有一些输出参数,则必须注册这些参数。
下面是一个例子,假设我们已经导入了模块(java.sql.CallableStatement 和 java.sql.Types)并且已经建立了连接。
CallableStatement callStmt = conn.prepareCall("{CALL <PROCEDURE_NAME>(?, ?, ?)}");
callStmt.setString(1, data);
callStmt.registerOutParameter(2, Types.VARCHAR);
callStmt.registerOutParameter(3, Types.VARCHAR);
callStmt.executeQuery();
String outParameter1 = callStmt.getString(2);
String outParamenter2 = callStmt.getString(3);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.