我正在尝试使用@@ 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来查看条目是否存在)
答案 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;");
}