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类中,并且我可以看到阅读器没有返回任何东西。
作为一种解决方法—如果您只需要从存储函数中检索标量值,您可以通过OUT参数来实现。
格伦,我试着去理解原因,却发现是这样的。实际上我们使用其他组件,您可以在我们的GUI工具(dbForge Studio的免费express版本)中看到多个结果集的结果。