MySQL サーバーを稼働させています。手順を含むデータベースが含まれています。これはそれらの1つです:
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 の 1 行を含む 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();
}
}
}
それは返します:
false -1 " "
つまり、有効ではなく、レコードはありませんが、エラーはありません...グーグルで検索しようとしましたが、運がありませんでした。QSqlQuery
これもサポートしていますか?OUTパラメーターと「SELECT CASEをそれに入れる」を作成できましたが、単一のパラメーターだけでなく、戻りテーブルを使用して他のプロシージャを作成したい...