如何在PetaPoco查询中使用@

sna*_*ton 3 sql petapoco

我想在PetaPoco中使用@@ ROWCOUNT进行执行查询.

问题是,由于@,它将@@ ROWCOUNT视为"@ROWCOUNT"参数.

Must declare the scalar variable "@ROWCOUNT".
Run Code Online (Sandbox Code Playgroud)

这是执行查询代码

this.Execute(@"
            UPDATE  myTable
            SET     foo = @2
            WHERE   bar = @0
                AND bor = @1

            IF  @@ROWCOUNT=0
                INSERT INTO myTable
                (bar, bor, foo)
                VALUES
                (@0, @1, @2)", myItem.bar
                                , myItem.bor
                                , myItem.foo);
Run Code Online (Sandbox Code Playgroud)

我已经搜索过以查找是否有任何特定的语法用于PetaPoco SQL查询,但是我找不到任何有关使用@用于其他东西然后参数的信息.
如果没有办法,如果更新项目不存在,有什么方法可以插入吗?(我宁愿避免使用SELECT来查看条目是否存在)

小智 7

你可以像这样双倍逃避@@ @@@ ROWCOUNT.

您可以在ExecuteInsert方法的PetaPoco.cs文件中看到此技术.

public override object ExecuteInsert(
    Database db, 
    System.Data.IDbCommand cmd, 
    string PrimaryKeyName)
{
    db.ExecuteNonQueryHelper(cmd);
    return db.ExecuteScalar<object>("SELECT @@@IDENTITY AS NewID;");
}
Run Code Online (Sandbox Code Playgroud)