DataReader不会返回MySQL Stored Proc的结果

时间:2011-11-30 01:49:27

标签: c# mysql datareader mysql.data

我在MySQL(5.5)中有一个存储过程,我从C#应用程序调用(使用MySQL.Data v6.4.4.0)。

我有一堆其他工作正常,但这并没有返回任何结果,数据读者说结果集是空的。 proc有两个插入和插入事务内部的更新然后选择2个本地变量返回。插入物和正在进行更新,但是选择没有返回。

当我手动运行proc时,它会工作,给出一行包含两个字段,但数据读取器为空。

这是proc:

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调用proc,但我调试了SqlMapper类,我可以看到读者没有返回任何内容。

1 个答案:

答案 0 :(得分:1)

作为解决方法 - 如果您只需要从存储函数中检索标量值,则可以通过OUT参数执行此操作。

格伦,我试图了解原因并发现了这一点。 实际上我们使用其他组件,您可以在我们的GUI工具(dbForge Studio的免费快递版本)中看到多个结果集的结果。