如何在PetaPoco查询中使用@

时间:2014-02-28 20:11:37

标签: sql petapoco

我正在尝试使用@@ ROWCOUNT在PetaPoco中执行查询。

问题是,由于@。它将@@ ROWCOUNT视为“@ROWCOUNT”参数。

Must declare the scalar variable "@ROWCOUNT".

这是执行查询代码

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);

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

1 个答案:

答案 0 :(得分:6)

你可以像这样双倍逃避@@。 @@@ 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;");
}