Russian Qt Forum

Qt => Базы данных => Тема начата: radislav72 от Август 30, 2011, 13:50



Название: Вызов функции Postgres с параметром-массивом
Отправлено: 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();
Но как передать массив?


Название: Re: Вызов функции Postgres с параметром-массивом
Отправлено: radislav72 от Август 31, 2011, 09:45
В Гугле пусто, ответов нигде нет... Документация Qt молчит...

Наверно, никто не пользуется параметрами-массивами?


Название: Re: Вызов функции Postgres с параметром-массивом
Отправлено: Makss от Август 31, 2011, 22:36
http://sqle.ru/index.php/PostgreSQL/Array/Array_Column_Insert


Название: Re: Вызов функции Postgres с параметром-массивом
Отправлено: asvil от Август 31, 2011, 23:49
Никак. Создавайте строку вручную и биндите строку.


Название: Re: Вызов функции Postgres с параметром-массивом
Отправлено: radislav72 от Сентябрь 19, 2011, 11:53
Если кому интересно, вышел из положения путем программного формирования строки запроса вида:
Код:
qrs = "SELECT finance.pay_calc(param1, param2, ... ARRAY[3,4,5,])";

После чего выполнение запроса:
Код:
QSqlQuery q;
q.exec(qrs);