powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Многострочный результат запроса (QT + С++)
9 сообщений из 9, страница 1 из 1
Многострочный результат запроса (QT + С++)
    #34526663
Ми
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PostgreSQL 8.2.3 + QT 4.2.0 + C++
Хочу передать в программу-клиент (на С++) многострочный результат
запроса. По условию необходимо работать с базой только через ХП.
(Т.е. SQL-инструкции в явном виде в сишном коде присутствовать не должны)
Создана процедура вида
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE OR REPLACE FUNCTION "mail"."mt_fetch" () RETURNS SETOF "mail"."mailtempls" AS
$body$
DECLARE
       x record;
BEGIN
    for x in  SELECT * FROM mail.mailtempls WHERE activity =  0  LOOP
    return next x;
    END LOOP;
    RETURN;
	
END
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
Работает.
Вот как бы ее в клиенте вызвать. Если возможно, ткните в образец кода.

Или лучше другие конструкции использовать? Курсор, например?
...
Рейтинг: 0 / 0
Многострочный результат запроса (QT + С++)
    #34526742
st_serg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уже ж вроде бы не раз и не два обсуждалось на форуме... попробуйте поиском
...
Рейтинг: 0 / 0
Многострочный результат запроса (QT + С++)
    #34526948
v0v4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот кусок кода если еще не нашел.

QString queryStr = QString( "SELECT "
"R.guid,"
"R.name,"
"R.description"
"FROM "
"table R JOIN ;")
QSqlQuery query(queryStr, db);
QSqlRecord rec = query.record();
if (!rec.isEmpty())
{
while (query.next())
{
const int& indexOfGuid = rec.indexOf("guid");
const int& indexOfName = rec.indexOf("name");
const int& indexOfDescription = rec.indexOf("description");

qint64 guid = query.value(indexOfGuid).toLongLong();
QString name = query.value(indexOfName).toString();
QString description = query.value(indexOfDescription).toString();
}
}
...
Рейтинг: 0 / 0
Многострочный результат запроса (QT + С++)
    #34527080
Ми
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хе-хе ;-) Спасибо.
Только не должно быть там конструкций вида
Код: plaintext
1.
2.
3.
4.
5.
6.
QString queryStr = QString( "SELECT "
"R.guid,"
"R.name,"
"R.description"
"FROM "
"table R JOIN ;")
(см. первый пост)
Только через хранимки с базой работаем.
...
Рейтинг: 0 / 0
Многострочный результат запроса (QT + С++)
    #34527181
v0v4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дык я для примера. Я так понял загвоздка то была не в этом.
...
Рейтинг: 0 / 0
Многострочный результат запроса (QT + С++)
    #34527260
Ми
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Затруднение, собственно, именно в том, чтобы в си эту процедуру
вызвать, и получить неким образом выходные параметры.
И вот не вполне мне понятно, как это корректно сделать -
то ли надо получать некий массив, то ли в клиенте какой-то цикл
должен работать (ну по аналогии с while (query.next()) )
А должно же быть какое-то простое решение - дейсвие-то тривиальное.....
...
Рейтинг: 0 / 0
Многострочный результат запроса (QT + С++)
    #34527288
st_serg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select * from func() as (f1 type1, f2 type2..)
без as - переписать функцию с out параметрами
возвращать рефкурсор
...
Рейтинг: 0 / 0
Многострочный результат запроса (QT + С++)
    #34527331
v0v4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я не понял какая разница какой запрос в С++: из процедуры или напрямую? Проверяеш запрос в SQL редакторе и вставляеш его в С++.

Если вопрос как выбрать из процедуры вообще, то вот пример:

select
guid ,
name ,
description
from
SELECT_OBJECT_BY_PARENTS(0, 'region')
as (
guid bigint,
name varchar(20),
description varchar(50)
);
...
Рейтинг: 0 / 0
Многострочный результат запроса (QT + С++)
    #34527363
v0v4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в твоем случае mailtempls - пользовательский тип, "as" писать не обязательно.
тогда пишеш select * from mt_fetch();
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Многострочный результат запроса (QT + С++)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]