簡體   English   中英

如何使用 JDBC 執行過程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM