У меня есть процедура, в которой я хочу передать точные значения из jdbc, которые передаются от пользователя после формата запроса.
но когда я использую подготовленное состояние с $$, выдает ошибку:
org.postgresql.util.PSQLException: The column index is out of range: 3, number of columns: 2.
однако без $$ все работает отлично. Пожалуйста, помогите мне, как передать аргумент с $$ с preparestatement?
conn = DriverManager.getConnection(jdbcUrl, username, password);
String prepareselectSQL="SELECT get_sum(?,?,$$?$$)";
stmt=conn.prepareStatement(prepareselectSQL);
stmt.setInt(1,10);
stmt.setInt(2,200);
stmt.setString(3,"");
rs = stmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getString(1));
}
см. Мой пример запроса:
select * from getdashboarddata_010('application','(upload + download)',?,'2018-02-05 00:00:00','2018-02-05 00:00:00','0','5-1','','hits','desc','','true');
ниже значение, которое нужно заменить на? :
(select * , ''::text as srczonename, ''::text as srczonetype, ''::text as firewall_cat_type, ''::text as destzonename, ''::text as destzonetype , null::int as appresolver from fwapp_applicationutfv5_12hr ) fwapp_applicationutfv5_12hr where "5mintime" >='2018-05-04 00:00:00' and "5mintime" < '2018-05-04 23:59:59'
Итак, вы можете видеть, что мое значение уже содержит одинарные кавычки, по этой причине мне нужно передать это с использованием кавычек в долларах в отчете о подготовке.