如何在MySQL过程中获得ENUM的值?



在我看来,在MySQL中,至少在5.0.51a-24+lenny5 (Debian)版本中,枚举被破坏了。我有一个简单的查找表,它包含一个enum字段:

CREATE TABLE `FrameworkServices` (
  ...
  `DNSType` enum('IP','CNAME') NOT NULL,
  ...
)

Ad-hoc,我可以运行以下命令而不会出现问题:

SELECT DNSType, CNameOrIP INTO @hackEnum, @ipAddress
FROM FrameworkServices WHERE FrameworkTypeId = 1 LIMIT 1;
SELECT @hackEnum, @ipAddress;

然而,如果我把完全相同的代码放入一个过程中,@hackEnum返回空(不是空,至少通过TOAD)。

我尝试选择DNSType+0, CONCAT(DNSType, ")和其他似乎对枚举有效的所有内容,结果是相同的:我读过的每一篇文章都是临时的,但在过程中返回空!

我甚至尝试使用局部变量并将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');

,虽然技术上是正确的,但失败了。

只声明你的返回变量,有varchar(xx);

CREATE TABLE `FrameworkServices` (
  ...
  `DNSType` enum('IP','CNAME') NOT NULL,
  ...
)
declare valor varchar(40);
select DNSType from FrameworkServices into valor; 

和这一切!!

相关内容

  • 没有找到相关文章

最新更新