如何在MySQL过程中获取ENUM的值

|| 在我看来,至少在版本5.0.51a-24 + lenny5(Debian)中,MySQL中的枚举已损坏。我有一个简单的查找表,其中包含一个枚举字段:
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,\'\')以及在枚举上似乎有效的所有其他东西,结果是相同的:    我阅读的每篇文章都是临时的,但是在Procedure中返回为空! 我什至尝试使用局部变量并将hackEnum定义为相同的ENUM类型。     
已邀请:
我遇到了完全相同的问题-我正在检索一个ENUM值,然后通过
IF...ELSE...END IF
进行检查。它为什么没有工作,让我发疯。解决方案是选择一个char(1),然后将ENUM列值视为字符串:
DECLARE use_free CHAR(1);

SELECT use_free INTO use_free FROM ...;

IF use_free = \'1\' THEN
  <do something>
ELSE
  <do something else>
END IF;
我第一次使用:
DECLARE use_free ENUM(\'0\',\'1\');
虽然技术上正确,但失败了。希望这对您有所帮助。     
仅声明您的return变量,具有varchar(xx);
CREATE TABLE `FrameworkServices` (
  ...
  `DNSType` enum(\'IP\',\'CNAME\') NOT NULL,
  ...
)

declare valor varchar(40);
select DNSType from FrameworkServices into valor; 
而这一切!     

要回复问题请先登录注册