我試圖在postgresql中編寫示例存儲函數,並使用JDBC提供的CallableStatement調用它們。CallableStatement PostgreSQL:無效的參數數量錯誤
下面是一些我的測試代碼
Consumer bean =new Consumer();
CallableStatement pstmt = null;
try {
con.setAutoCommit(false);
String query = "{ ? = call getData(?) }";
pstmt = con.prepareCall(query);
pstmt.registerOutParameter(1, Types.OTHER);
pstmt.setInt(2,5);
pstmt.execute(); // execute update statement
bean=(Consumer)pstmt.getObject(1);
System.out.println("bean"+bean.getConsumer_name());
而且我的存儲功能的形式爲。
CREATE FUNCTION getData(int) RETURNS SETOF db_consumer AS $$
SELECT * FROM db_consumer WHERE consumer_id = $1;
$$ LANGUAGE SQL;
但是,當我嘗試運行代碼時出現以下錯誤。
org.postgresql.util.PSQLException: A CallableStatement was executed with an invalid number of parameters .
任何想法爲什麼會發生這種情況?
嘿,謝謝你的回覆,我已經做好了準備工作。只是想知道如何使用CallableStatement .. – KodeSeeker
我不認爲這是可能的。使用CallableStatement,您需要一個OUT參數(例如REF CURSOR)以處理結果。但是你創建你的函數的方式並沒有定義一個refcursor。我認爲使用SELECT是唯一的選擇。 –