У меня хранимая процедура в Informix (11.50.FC8), возвращающая несколько значений.неожиданный нулевой указатель, встречающийся в подготовленном сообщении
Следующий код (который был частью более сложного запроса) не:
String sql = "SELECT * FROM TABLE(FUNCTION my_stored_procedure(?))";
Connection con = dataSource.getConnection();
PreparedStatement ps = con.prepareStatement(sql);
Трассировка Исключение составляет:
Exception in thread "main" java.sql.SQLException:
System error - unexpected null pointer encountered.
at com.informix.util.IfxErrMsg.getSQLException(IfxErrMsg.java:379)
at com.informix.jdbc.IfxSqli.addException(IfxSqli.java:3109)
at com.informix.jdbc.IfxSqli.receiveError(IfxSqli.java:3419)
at com.informix.jdbc.IfxSqli.dispatchMsg(IfxSqli.java:2282)
at com.informix.jdbc.IfxSqli.receiveMessage(IfxSqli.java:2202)
at com.informix.jdbc.IfxSqli.executePrepare(IfxSqli.java:1093)
at com.informix.jdbc.IfxResultSet.executePrepare(IfxResultSet.java:189)
at com.informix.jdbc.IfxPreparedStatement.setupExecutePrepare(IfxPreparedStatement.java:193)
at com.informix.jdbc.IfxPreparedStatement.<init>(IfxPreparedStatement.java:171)
at com.informix.jdbc.IfxSqliConnect.prepareStatement(IfxSqliConnect.java:1964)
at test.Main.main(Main.java:27)
Запрос не терпит неудачу, если я пишу это как
SELECT * FROM TABLE(FUNCTION my_stored_procedure(1))
Вопрос: Как я могу указать параметр?
Я попытался готовит CallableStatement
в {call my_stored_procedure(?)}
(и она работала), но мне нужно построить запрос, который объединяет несколько результатов из одной и той же процедуры, с различными параметрами, как:
SELECT * FROM TABLE(FUNCTION my_stored_procedure(1))
UNION SELECT * FROM TABLE(FUNCTION my_stored_procedure(2))
Я проверю версию драйвера, но учтите, что исключение генерируется в 'prepareStatement', а не в' executeQuery'. – Javier