1

我在mysql中有一个函数,如下所示:

DELIMITER $$ 

CREATE DEFINER=root@localhost FUNCTION fnGetDropDownValue(
    itemValue varchar(300), 
    DropDownId int, 
    CId int
) RETURNS int(11)
BEGIN
    DECLARE listId int;
    SELECT ListID into listId FROM DropDownListValues WHERE LOWER(ListValue) = LOWER(itemValue) AND DropDownListID = DropDownId AND (ClientId = 0 OR ClientId = CId);
    RETURN listId;
END$$


但是当我使用它时它总是返回 Null 值
SELECT fnGetDropDownValue('General', 24, 18); 我不知道我做错了什么:(

4

1 回答 1

1

在 mysql 列有区分大小写的问题后,我曾经有变量名以 _ 开头,以避免它与列名混淆。现在存储过程如下所示:

DELIMITER $$ 

CREATE DEFINER=root@localhost FUNCTION fnGetDropDownValue(
    itemValue varchar(300), 
    DropDownId int, 
    CId int
) RETURNS int(11)
BEGIN
    DECLARE _listId int;
    SELECT ListID into _listId FROM DropDownListValues WHERE LOWER(ListValue) = LOWER(itemValue) 
        AND DropDownListID = DropDownId AND (ClientId = 0 OR ClientId = CId);
    RETURN _listId;
END$$

这样它就可以在任何平台上运行,并且可能对其他人有用。

于 2019-05-06T13:34:09.250 回答