Нет проблем с кодом. Но, поскольку карта параметров хранит объект как значение, вам может потребоваться приводить значение обратно к его типу каждый раз, когда вы получаете его с карты (каждый ключ хранит значение, тип которого отличается.).
Map<String, Object> params = new HashMap<>();
params.put("sl", new String[]{"AZN"});
params.put("dType", "trade");
// year - the year minus 1900
// month - 0 to 11
params.put("startDate", new Date(2018-1900, 11, 20));
params.put("endDate", new Date(2018-1900, 11, 20));
params.put("tZ", "Eur");
params.put("ac", "equity");
params.put("af", new Object[]{"=", "price", 6031} );
for(Object obj:(Object[]) params.get("af")) {
System.out.println(obj);
}
for(String obj:(String[]) params.get("sl")) {
System.out.println(obj);
}
Вы могли определить некоторые пользовательские переменные классы в своем postgresql.conf и использовать его в качестве переменных соединения в Вашей хранимой процедуре. См. документы.
Пример использования для пользовательского переменного класса "imos":
imos=> set imos.testvar to 'foobar';
SET
Time: 0.379 ms
imos=> show imos.testvar;
imos.testvar
--------------
foobar
(1 row)
Time: 0.333 ms
imos=> set imos.testvar to 'bazbar';
SET
Time: 0.144 ms
imos=> show imos.testvar;
imos.testvar
--------------
bazbar
(1 row)
В хранимых процедурах можно использовать встроенную функцию current_setting ('imos.testvar').
PostgreSQL не поддерживает глобальный (сессия) переменные, но необходимо использовать некоторые приемы
http://www.pgsql.cz/index.php/PostgreSQL_SQL_Tricks_II#Any_other_session_variables http://www.postgresql.org/docs/8.3/static/plperl-global.html
отношения Pavel Stehule
С Postgresql форумов ...
Итак, пара вопросов .. ..
- Можете ли вы объявить глобальные значения из plpgsql?
- Если так, есть ли способ избежать загрязнения пространства имен? (возможно, эквивалентно использованию Oracle пакета plsql переменные)
plpgsql не имеет глобальных переменных.
К сожалению, в PL / pgSQL нет глобальных переменных, хотя вы можете найти их на других языках PL, которые поставляются с PostgreSQL, в частности, в PL / Perl , PL / Python и PL / Tcl
Другой вариант - создать временную таблицу и использовать ее для хранения всех ваших временных переменных
CREATE TEMPORARY TABLE tmp_vars(
name varchar(64),
value varchar(64),
PRIMARY KEY (name)
);
Вы даже можете создать хранимую процедуру для управления всем, создавая таблицу, если это не так. еще не существует. Один для извлечения и один для хранения.