У меня есть сервер MySQL и работает. Он содержит базу данных с процедурами. Это один из них:Получение результатов хранимых процедур MySQL с QSqlQuery
CREATE PROCEDURE `handshake`()
BEGIN
DECLARE `is_new` INT;
SELECT `value` INTO `is_new` FROM `Defaults` WHERE `key` = 'new_db';
SELECT (SELECT CASE
WHEN `is_new` = 1 THEN 1
WHEN `is_new` = 0 THEN 0
WHEN `is_new` = NULL THEN -1
ELSE -2
END) AS 'state';
END
Он работает через MySQL Workbench и возвращает таблицу одну колонку (состояние) с одной строки значение 1. Но когда я пытаюсь использовать его так:
QSqlQuery test_query(test_db);
if (test_query.prepare("CALL handshake();")) {
qDebug() << "one";
if (test_query.exec()) {
qDebug() << "two";
if (test_query.first()) {
qDebug() << "Yay!";
}
else {
qDebug() << test_query.isValid() << test_query.size() << test_query.lastError().text();
}
}
}
возвращается:
ложь -1 ""
, что означает: не выписывается на nd нет записей, но ошибок нет ... Я пытался сделать это, но не повезло. QSqlQuery
даже поддерживает это? Я могу создать параметр OUT и «SELECT CASE in it», но я хочу создать другие процедуры с таблицами возврата, а не только с одним параметром ...