0

IF を使用して 1 つの関数を記述しようとしていますが、エラーが発生しています

SQL 構文にエラーがあります。8 行目のコード 1064 の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

これが関数です。

DELIMITER $$

DROP FUNCTION IF EXISTS `my_fun` $$
CREATE FUNCTION `my_fun` (nid INT) RETURNS VARCHAR(200)
BEGIN
DECLARE abc varchar(100);
SELECT foo INTO abc FROM my_table WHERE bar = nid;
IF abc = ''
THEN
SELECT foo INTO abc FROM my_table WHERE bar = -1;
RETURN abc;
END $$

DELIMITER ;

ここで構文がわかりません。私も試しIF abc IS NULLました。最初のselectステートメントが空の値を返したかどうかを確認してから、別のステートメントを実行したいだけです。

4

2 に答える 2

2

END IFステートメントがありません。

コードは次のようになります。

DELIMITER $$

DROP FUNCTION IF EXISTS `my_fun` $$
CREATE FUNCTION `my_fun` (nid INT) RETURNS VARCHAR(200)
BEGIN
DECLARE abc varchar(100);
SELECT foo INTO abc FROM my_table WHERE bar = nid;
IF abc = ''
THEN
SELECT foo INTO abc FROM my_table WHERE bar = -1;
END IF;
RETURN abc;
END $$

DELIMITER ;
于 2012-09-04T07:06:45.637 に答える
0

まず、END IF ステートメントがありません。次に、IF condition_statement で次のことを行ってください。

IF (SELECT foo FORM my_table WHERE bar = nid) IS NULL
THEN
SELECT foo INTO abc FROM my_table WHERE bar = -1;
END IF

于 2012-09-04T07:18:40.420 に答える