如果在mysql函数中,简单查询不起作用

时间:2014-02-10 21:50:37

标签: mysql sql

我在函数内部使用查询来获取数据库中的值,但它返回NULL。 函数外的相同查询工作正常。

我的职能

BEGIN
    RETURN (SELECT `value` FROM data WHERE `k` = 29 AND `entity` = "abr9f9" LIMIT 1);
END

使用函数和相同的原始查询进行测试

SELECT 
    GETSTATIC() AS static,
    (SELECT `value` FROM data WHERE `k` = 29 AND `entity` = "abr9f9" LIMIT 1) AS raw

正在返回

static     raw
------     ---
NULL       175

我认为这是因为我没有在函数中选择返回字段VALUE。
我该怎么做?

1 个答案:

答案 0 :(得分:2)

BEGIN和END之间的第一个代码示例不会返回您的预期结果,因为此表示法用于定义过程,而第二个示例是纯SQL DML。

如果需要,您可以阅读CREATE PROCEDURE语法,特别是OUT参数。

修改

试试这个:

create function GETSTATIC()
returns integer 
return (SELECT `value` FROM data WHERE `k` = 29 AND `entity` = "abr9f9" LIMIT 1);

然后你会称之为:

select GETSTATIC() as static;