Russian Qt Forum
Сентябрь 30, 2024, 08:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вызов функции Postgres с параметром-массивом  (Прочитано 8559 раз)
radislav72
Гость
« : Август 30, 2011, 13:50 »

Есть функция Postgres, написанная на pl/pgSQL, и у нее один параметр- массив INTEGER:

Код:
CREATE FUNCTION "finance"."pay_calc" (
  "dt1_" date,
  "dt2_" date,
  "m_id_" integer,
  "dps_types_" integer []
)
RETURNS integer AS
$body$
...

Как из программы, написанной на Qt, передать через етот параметр массив целых чисел?
По "стандарту", надо бы делать так:
Код:
    QSqlQuery q;
    q.prepare("select finance.pay_calc(:dt1_, :dt2_, :m_id_, :dps_types_)");
    q.bindValue(":dt1_", QDate::currentDate());
    q.bindValue(":dt1_", QDate::currentDate().addYears(2));
    q.bindValue(":m_id_", 110);
    q.bindValue(":dps_types_", ??????????);
    q.exec();
    q.next();
Но как передать массив?
Записан
radislav72
Гость
« Ответ #1 : Август 31, 2011, 09:45 »

В Гугле пусто, ответов нигде нет... Документация Qt молчит...

Наверно, никто не пользуется параметрами-массивами?
Записан
Makss
Гость
« Ответ #2 : Август 31, 2011, 22:36 »

http://sqle.ru/index.php/PostgreSQL/Array/Array_Column_Insert
Записан
asvil
Гость
« Ответ #3 : Август 31, 2011, 23:49 »

Никак. Создавайте строку вручную и биндите строку.
Записан
radislav72
Гость
« Ответ #4 : Сентябрь 19, 2011, 11:53 »

Если кому интересно, вышел из положения путем программного формирования строки запроса вида:
Код:
qrs = "SELECT finance.pay_calc(param1, param2, ... ARRAY[3,4,5,])";

После чего выполнение запроса:
Код:
QSqlQuery q;
q.exec(qrs);
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.044 секунд. Запросов: 21.