DataReader没有从MySQL存储过程返回结果

本文关键字:存储过程 返回 结果 MySQL DataReader | 更新日期: 2023-09-27 18:16:04

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

我有一堆其他的过程工作得很好,但这是不返回任何结果,数据阅读器说结果集是空的。这个过程做了几个插入&事务内部的更新然后选择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类中,并且我可以看到阅读器没有返回任何东西。

DataReader没有从MySQL存储过程返回结果

作为一种解决方法—如果您只需要从存储函数中检索标量值,您可以通过OUT参数来实现。

格伦,我试着去理解原因,却发现是这样的。实际上我们使用其他组件,您可以在我们的GUI工具(dbForge Studio的免费express版本)中看到多个结果集的结果。