我想在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)