2014-02-10 63 views
0

我在函數內部使用查詢來獲取數據庫中的值,但它返回NULL。 功能外的相同查詢正常工作。如果在mysql函數中,簡單查詢不起作用

我的功能使用功能和相同的原始查詢

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

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

測試將返回

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

我認爲這是因爲我沒有選擇函數中的返回字段VALUE。
我該怎麼做?

回答

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; 
+0

我需要這是一個功能,因爲我有其他查詢內運行。現在有使用函數按預期返回值的方法嗎? – user3175226

+0

有,請閱讀我鏈接的文章,有關於創建一個功能的例子,例如RETURNS CHAR(50) – Kitet

+0

兼容但更完整的定義應該在'RETURNS INT'之後包含'DETERMINISTIC'' READS SQL DATA'。 –