DataReader не возвращает результаты из MySQL Stored Proc - PullRequest
0 голосов
/ 30 ноября 2011

У меня есть сохраненный процесс в MySQL (5.5), который я вызываю из приложения C # (используя MySQL.Data v6.4.4.0).

У меня есть куча других процедур, которые работают нормально, но это не возвращает никаких результатов, считыватель данных говорит, что набор результатов пуст.Proc делает пару вставок и обновление внутри транзакции, затем выбирает 2 локальные переменные для возврата.Происходит вставка и обновление, но выбор не возвращается.

Когда я запускаю процесс вручную, он работает, выдает одну строку с двумя полями, но считыватель данных пуст.

Это процесс:

CREATE DEFINER=`root`@`localhost` PROCEDURE `File_UpdateFile`(IN siteId INT, IN fileId INT, IN description VARCHAR(100), IN folderId INT, IN fileSize INT, IN filePath VARCHAR(100), IN userId INT)
BEGIN
    START TRANSACTION;  
        SELECT MAX(v.versionNumber) + 1 INTO @versionNumber 
        FROM `file_version` v 
        JOIN `file` f ON (v.fileId = f.fileId) 
        WHERE v.fileId = fileId AND f.siteId = siteId;

        INSERT INTO `file_version` (fileId, versionNumber, description, fileSize, filePath, uploadedOn, uploadedBy, fileVersionState)
        VALUES (fileId, @versionNumber, description, fileSize, filePath, NOW(), userId, 0);

        INSERT INTO filehistory (fileId, `action`, userId, createdOn) VALUES (fileId, 'UPDATE', userId, NOW());

        UPDATE `file` f SET f.checkedOutBy = NULL WHERE f.fileId = fileId;

    COMMIT;
    SELECT fileId, @versionNumber `versionNumber`;


    END$$

Я вызываю процесс с помощью Dapper, но я отлажен в классе SqlMapper и вижу, что читатель ничего не возвращает.

1 Ответ

1 голос
/ 01 декабря 2011

В качестве обходного пути - если вам нужно извлечь только скалярное значение из сохраненной функции, вы можете сделать это через параметры OUT.

Гленн, я пытался понять причину и нашел именно так. На самом деле мы используем другие компоненты, вы можете увидеть результат множественного набора результатов в нашем инструменте с графическим интерфейсом (бесплатная экспресс-версия dbForge Studio).

...