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 に答える