[英]How can I execute non-query Stored Procedure in JDBC
我在postgres數據庫中有一個存儲過程。 我正在使用postgres JDBC驅動程序來執行存儲過程,並且我不在乎返回類型,並且無法執行查詢。 這表明函數名稱附近存在語法錯誤。
在返回行的過程中,我已經可以通過PreparedStatement並設置參數來做到這一點,例如:
PreparedStatement prepared = connection.prepareStatement("SELECT * FROM NonQueryProcedure(?)");
prepared.setInt(1, 999);
// ....
ResulSet resultSet = prepared.executeQuery();
但是,對於似乎不關心返回類型的“更新”存儲過程,我似乎無法使用它。 我嘗試使用connection.prepareStatement()和prepareCall(),還嘗試使用statement.execute()、. executeUpdate()和.executeQuery()來執行它,但沒有成功。
在不關心返回類型的情況下,如何執行存儲過程?
沒有實際的語法錯誤,我不能肯定地說,但是嘗試一下:
"SELECT * FROM \"getData\"(?)"
CamelCase / PascalCase是任何SQL數據庫中的一個壞主意。 要么將其折疊為單個大小寫,然后您看到的只是AMASSOFUNREADABLELETTERS或需要引用,並且您想避免語法錯誤的任何時候,都將不得不永遠輸入“ aMassofLettersAndQuotesAndShiftKeysAndMyFingersHurt”。
由於PostgreSQL沒有“真正的”過程,因此只需使用SELECT
語句即可執行函數:
statement.execute("select NonQueryProcedure(?)");
請注意,在PL / pgSQL函數內部,可以使用perform
語句調用此類函數。 但這在PL / pgSQL塊之外不可用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.