簡體   English   中英

如何在JDBC中執行非查詢存儲過程

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

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