MySQL错误,"不允许从函数返回结果集"?

时间:2018-04-25 22:39:19

标签: mysql function mysql-function

我试图绕过mySQL中的函数,我正在制作一个检查列account_description和它的值以查看描述是否已存在的函数。

如果它确实存在,则显示一条消息。但是,如果描述不存在,则显示不同的消息,表明找不到。

谢谢!

MySQL代码:

DROP FUNCTION IF EXISTS test_glaccounts_description

DELIMITER //

CREATE FUNCTION test_glaccounts_description
(
    check_description VARCHAR(50)
)
RETURNS VARCHAR(50)
BEGIN

DECLARE var_check VARCHAR(50);

SELECT
    account_description INTO var_check
FROM
    general_ledger_accounts
WHERE
    account_description = check_description;

    IF var_check = check_description THEN
        SELECT 'That description already exists.';
    ELSEIF var_check != check_description THEN
        SELECT 'That description does not exist.';
    END IF;

RETURN var_check;

END //

DELIMITER ;

SELECT
    test_glaccounts_description(account_description) as 'Check'
FROM 
    general_ledger_accounts
WHERE
    account_description = 'Accounting';

1 个答案:

答案 0 :(得分:1)

您不能使用SELECT在存储函数中显示消息,您只能通过RETURN语句返回单个值。您会在documentation

中找到此内容
  

返回结果集的语句可以在存储中使用   过程但不在存储的函数内。这项禁令包括   SELECT语句没有INTO var_list子句和其他子句   诸如SHOW,EXPLAIN和CHECK TABLE之类的语句。对于那些陈述   可以在函数定义时确定返回结果集,   a不允许从函数错误返回结果集   (ER_SP_NO_RETSET)。对于只能在   运行时返回结果集,PROCEDURE%s无法返回结果   在给定的上下文中设置发生错误(ER_SP_BADSELECT)。