1

次のように、TABLE BのIDのリストに存在するTABLE Aから複数のレコードを削除しようとしています:

List<ulong> ids = new List<ulong> {1, 2};

string deleteQuery = string.Format(
                @"DELETE FROM TABLE_A WHERE EXISTS 
                (SELECT id FROM TABLE_B WHERE checkpoint_id IN :idList)");

Session.CreateQuery(deleteQuery).SetParameterList("idList", ids).ExecuteUpdate();

次の例外が発生します。

NHibernate.Hql.Ast.ANTLR.QuerySyntaxException: Exception of type 'Antlr.Runtime.NoViableAltException' was thrown. near line 2, column 100

ハードコードされたリストを [IN (1,2)] にすると、機能します。何が恋しいですか?

4

1 に答える 1

2

問題が見つかりました:

:idList の周りに余分な括弧が必要でした。

string deleteQuery = string.Format(
            @"DELETE FROM TABLE_A WHERE EXISTS 
            (SELECT id FROM TABLE_B WHERE checkpoint_id IN (:idList))");
于 2012-09-24T10:22:56.637 に答える