我有一个带有以下代码的存储过程:
INSERT INTO vt_benutzer_medien_liste (`BenutzerID`, `ReportID`, `MedienDateiTypID`, `Dateiname`, `Dateidatum`, `Dateigroesse`, `Bemerkungen`)
SELECT UserID, ReportID, COALESCE(vtmd.ID,16), Filename, FileDate, FileSize, Message
FROM vt_medien_dateityp AS vtmd
WHERE vtmd.Dateiendung = SUBSTRING_INDEX(Filename,'.',-1)
LIMIT 1
UserID、ReportID、Filename、FileDate、FileSize 和 Message 是参数
插入部分工作正常。将参数“Filename”中提供的文件扩展名与表 vtmd 中的文件扩展名列表进行比较。只要文件扩展名存在于 vtmd 中,这也可以正常工作。
如果没有,它应该得到一个默认值 16 -> COALESCE(vtmd.ID,16) 但这不会发生。过程结束时没有任何错误,也没有插入,因为 SELECT 没有找到/返回任何行。
我能做什么?
PS:别名是为了可读性。
更新
SELECT 返回空结果。这就是我想返回 16 作为默认值的情况。
这有效:
BEGIN
SELECT @XDateiTypID := COALESCE((SELECT ID FROM vt_medien_dateityp WHERE Dateiendung = SUBSTRING_INDEX(Filename,'.',-1) LIMIT 1),16);
INSERT INTO vt_benutzer_medien_liste (`BenutzerID`, `ReportID`, `MedienDateiTypID`, `Dateiname`, `Dateidatum`, `Dateigroesse`, `Bemerkungen`)
VALUES (UserID, ReportID, @XDateiTypID, Filename, FileDate, FileSize, Message);
END
PS:BEGIN .. END 需要,因为它是一个存储过程。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句