我有一個存儲過程在MySQL(5.5),我從C#應用程序調用(使用MySQL.Data v6.4.4.0)。DataReader沒有返回MySQL存儲過程的結果
我有一堆可以正常工作的其他特效,但是這不會返回任何結果,數據讀取器說結果集是空的。 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$$
我打電話用短小精悍的PROC,但我已經調試到SqlMapper類,我可以看到,讀者不返回任何東西。
只是一個猜測(對不起,我沒有一個MySql實例),但DataReader中有多個結果集可用嗎?如果你調用'reader.NextResult()'兩次然後嘗試'Read()'會發生什麼? – rsbarro
'NextResult'返回錯誤 –
作爲一種解決方法 - 如果您需要從存儲函數中檢索標量值,則可以通過OUT參數執行此操作。 – Devart