-2

アプリケーションに次のクエリがあります。

string sql = @"UPDATE AccountGroup
            SET IdGroup = @idGroup
            WHERE IdAccount = @idAccount;

            IF (ROW_COUNT() = 0) THEN
                INSERT INTO AccountGroup (IdAccount, IdGroup)
                VALUES (@idAccount, @idGroup);
            END IF;"

このエラーメッセージが表示されます:

SQL 構文にエラーがあります。1 行目の 'IF (ROW_COUNT() = 0) THEN INSERT INTO AccountGroup (IdAccount, IdGroup)' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

何が問題ですか?

4

1 に答える 1

1

これをテストするのに便利な MySQL サーバーがありません。IF() とは言っても、使いたい時に使っている可能性はありますIFか?

ドキュメントからIF()

IF(expr1,expr2,expr3)

expr1 が TRUE (expr1 <> 0 および expr1 <> NULL) の場合、IF() は expr2 を返します。それ以外の場合は expr3 を返します。IF() は、使用されるコンテキストに応じて、数値または文字列の値を返します。

そして、ドキュメントからIF

IF search_condition THEN statement_list
   [ELSEIF search_condition THEN statement_list] ...
   [ELSE statement_list]
END IF

コードを次のように書きたいと思うでしょう

string sql = @"UPDATE AccountGroup
            SET IdGroup = @idGroup
            WHERE IdAccount = @idAccount;

            IF ROW_COUNT() = 0 THEN
                INSERT INTO AccountGroup (IdAccount, IdGroup)
                VALUES (@idAccount, @idGroup);
            END IF;"
于 2013-10-25T19:47:08.707 に答える