【发布时间】:2017-07-27 15:37:01
【问题描述】:
我有一个存储过程,代码如下:
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 是参数
插入部分工作正常。将参数“文件名”中提供的文件扩展名与表 vtmd 中的文件扩展名列表进行比较。 只要文件扩展名存在于 vtmd 中,这也可以正常工作。
如果不是,它应该得到一个默认值 16 -> COALESCE(vtmd.ID,16) 但这不会发生。由于 SELECT 未找到/返回任何行,因此该过程完成且没有任何错误并且未进行任何插入。
我能做什么?
PS:别名是为了便于阅读。
更新
SELECT 返回一个空结果。在这种情况下,我想将 16 作为默认值返回。
【问题讨论】:
-
只运行select语句,你会看到它是否返回数据
-
您是否尝试过只运行
SELECT而没有INSERT?我很确定它什么也没返回。