Question

I am trying to use @@ROWCOUNT for an execute query in PetaPoco.

Problem is, it consider @@ROWCOUNT like "@ROWCOUNT" parameter because of the @.

Must declare the scalar variable "@ROWCOUNT".

Here is the execute query code

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

I've searched to find if there was any specific syntax to use for PetaPoco SQL query, but I can't find any information about using @ for something else then parameters.
If there is no way to do it, is there any ways I can do an insert if the update item doesn't exist? (I'd rather avoid having to use a SELECT to see if the entry exist)

Was it helpful?

Solution

You can double escape the @@ like this. @@@ROWCOUNT.

You can see this technique used in the PetaPoco.cs file in the ExecuteInsert method.

public override object ExecuteInsert(
    Database db, 
    System.Data.IDbCommand cmd, 
    string PrimaryKeyName)
{
    db.ExecuteNonQueryHelper(cmd);
    return db.ExecuteScalar<object>("SELECT @@@IDENTITY AS NewID;");
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top