2014-02-28 2 views
3

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를 사용하지 않아도 됨)

+0

SQL Server를 사용하고 있습니다. 어떤 버전입니까? – Rikalous

답변

5

이렇게 @@를 두 번 이스케이프 처리 할 수 ​​있습니다. @@@ 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;"); 
} 
+0

부탁드립니다. – snaplemouton

관련 문제