Название: Вызов хранимой процедуры с параметрами (QMYSQL) Отправлено: Mechanik от Октябрь 26, 2010, 12:17 При вызове хранимой процедуры MySQL с предварительным использованием QSqlQuery::prepare() не удается получить возвращаемый ей набор данных.
Код хранимой процедуры: Код: CREATE PROCEDURE test(prm int) Код: #include <QtSql> При запуске во 2-м варианте, где тот же самый запрос выполняется с явной передачей значения параметра в exec, query.size() возвращает 1, query.next() - true, результат выводится. Вопрос - можно ли и каким образом обработать набор данных, возвращаемый процедурой, при использовании связывания параметров? Поиск особых результатов не дал, кроме, разве что http://lists.trolltech.com/pipermail/qt-interest/2008-December/000190.html (http://lists.trolltech.com/pipermail/qt-interest/2008-December/000190.html), там решения нет. mysql Ver 14.14 Distrib 5.1.39, for redhat-linux-gnu (i386) using readline 5.1 qt 4.6.2 Название: Re: Вызов хранимой процедуры с параметрами (QMYSQL) Отправлено: Пантер от Октябрь 26, 2010, 12:21 void QSqlQuery::bindValue ( const QString & placeholder, const QVariant & val, QSql::ParamType paramType)
Не оно? Название: Re: Вызов хранимой процедуры с параметрами (QMYSQL) Отправлено: Mechanik от Октябрь 26, 2010, 12:26 void QSqlQuery::bindValue ( const QString & placeholder, const QVariant & val, QSql::ParamType paramType) Значение paramType по умолчанию QSql::In, что в данном случае вполне устраивает. Нужно обработать не значение параметра, а возвращаемый процедурой набор.Не оно? Название: Re: Вызов хранимой процедуры с параметрами (QMYSQL) Отправлено: Mechanik от Октябрь 26, 2010, 12:37 При использовании драйвера ODBC первый вариант работает - query.next() - true, хоть query.size() и возвращает -1.
Название: Re: Вызов хранимой процедуры с параметрами (QMYSQL) Отправлено: crossly от Октябрь 27, 2010, 16:26 ответ есть в ассистенте...
Название: Re: Вызов хранимой процедуры с параметрами (QMYSQL) Отправлено: Mechanik от Ноябрь 11, 2010, 13:19 ответ есть в ассистенте... Вы имеете в виду эту http://doc.qt.nokia.com/4.6/sql-driver.html#qmysql-stored-procedure-support (http://doc.qt.nokia.com/4.6/sql-driver.html#qmysql-stored-procedure-support) статью?Цитировать MySQL 5 introduces stored procedure support at the SQL level, but no API to control IN, OUT and INOUT parameters. Therefore, parameters have to be set and read using SQL commands instead of QSqlQuery::bindValue(). Смущает, что значения параметров при этом в хп передаются, хотя как-бы не должны... Думал, может, есть какой-то удобный workaround, кроме переменных в sql. |