在我看來,枚舉在MySQL中至少在版本5.0.51a-24 + lenny5(Debian)中被破壞。我有一個包含一個枚舉場簡單的查找表:如何在MySQL過程中獲得ENUM的值
CREATE TABLE `FrameworkServices` (
...
`DNSType` enum('IP','CNAME') NOT NULL,
...
)
特設,我可以運行沒有問題如下:
SELECT DNSType, CNameOrIP INTO @hackEnum, @ipAddress
FROM FrameworkServices WHERE FrameworkTypeId = 1 LIMIT 1;
SELECT @hackEnum, @ipAddress;
但是,如果我把完全相同的代碼到一個程序,@hackEnum返回空(至少通過TOAD不爲空)。
我試過選擇DNSType + 0,CONCAT(DNSType,'')和其他一切似乎對枚舉有效的結果是一樣的: 我讀過的每篇文章都是ad-hoc工作的,但是返回空步驟!
我甚至嘗試過使用局部變量並將hackEnum定義爲相同的ENUM類型。
注意:我不喜歡這個枚舉,但現在我必須忍受它(繼承代碼),所以請不要建議重新輸入枚舉來使用查找表,即使這最終是最佳答案。 – iisystems 2011-04-20 22:09:53
模糊的可能性:嘗試'@hackEnum:= DNSType,@ipAddress:= CNameOrIp',以防萬一它是一個奇怪的解析器錯誤。 – 2011-08-05 20:36:43