1

2 つの値 ( a, b ) から null 以外の値を返す MySQL 関数を作成しようとしていますが、エラーが発生します。

DELIMITER $$ 
CREATE FUNCTION GetNonNull(a,b) BEGIN
IF a = NULL THEN RETURN b; ELSE return a; ENDIF; END $$ 
DELIMITER ;

次のエラーが表示されます。

エラー 1064 (42000): SQL 構文にエラーがあります。near 'b) BEGIN IF a = NULL THEN RETURN b; を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。ELSE は a; を返します。ENDIF; 1 行目の END'

どんな助けでも大歓迎です!

4

3 に答える 3

0

RETURNS関数が返すデータ型を示す句がありません。また、引数のデータ型も指定する必要があります。ドキュメントを確認する

于 2012-04-18T18:54:43.240 に答える
0

COALESCE独自の関数を作成するよりも、組み込み関数を使用することをお勧めします。

于 2012-04-18T18:57:35.290 に答える
0

これを試して

DELIMITER $$   
CREATE FUNCTION GetNonNull(a INT,b INT) RETURNS INT
BEGIN  
    IF a IS NULL THEN
        RETURN b;
    ELSE
        return a;
    ENDIF;
END $$   
DELIMITER ;  

また

DELIMITER $$   
CREATE FUNCTION GetNonNull(a INT,b INT) RETURNS INT
BEGIN  
    IF ISNULL(a) THEN
        RETURN b;
    ELSE
        return a;
    ENDIF;
END $$   
DELIMITER ;  

また

DELIMITER $$  
CREATE FUNCTION GetNonNull(a INT ,b INT) RETURNS INT
BEGIN 
    RETURN IFNULL(a,b);
END $$  
DELIMITER ; 

実際、ストアドプロシージャを次のように置き換えることができますIFNULL(a,b)

于 2012-04-18T19:01:54.893 に答える