Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ SQL. Базы данных. _ qt + firebird + хранимые процедуры

Автор: denis 17.8.2009, 12:29

столкнулся с проблемой: необходимо получить доступ к скалярному результату выполнения процедуры firebird. подробнее в коде:

хранимая процедура GETANAGRAM (вход - :keyword, выход - :word)

BEGIN
  FOR SELECT word FROM words WHERE keyword = :keyword INTO :word
  DO SUSPEND;
END


в клиенте:
...
    QSqlQuery query(db);
    query.prepare("EXECUTE PROCEDURE GETANAGRAM(:keyword)");
    query.bindValue(":keyword", sort(word));
    query.exec();
    while (query.next()){
        QString anagram = query.value(0).toString();
        resultStringList << anagram;
    }
...


при этом в resultStringList отправляется только крайнее из найденных значений, а необходимо получить весь скаляр. просьба, объяснить, каким образом это осуществить.

Автор: Litkevich Yuriy 17.8.2009, 13:25

Процедуры в Firebirde делятся на два типа:
1) Процедуры выполнения (возвращают одно значение) которые вызываются с помощью EXECUTE PROCEDURE MYPROCEDURE
1) Процедуры выбора (возвращают много значений благодаря SUSPEND) которые вызываются как обычные таблицы, т.е. с помощью SELECT * FROM MYPROCEDURE

Автор: denis 17.8.2009, 14:30

благодарю за развернутый ответ

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)