代码之家  ›  专栏  ›  技术社区  ›  TheMixy

C#将参数传递给Postgres Npgsqlcommand DO块

  •  1
  • TheMixy  · 技术社区  · 6 年前

    我得到错误“42883:运算符不存在:integer=@integer”Npgsql.PostgresException 尝试将参数传递给DO块时:

    var cmd = new NpgsqlCommand();
    cmd.CommandText = 
    @"DO $$ 
    BEGIN
    IF EXISTS (SELECT id FROM pub.table1 WHERE id = @id) THEN
        UPDATE pub.table1 
        SET Field1 = @Field1
           ,Field2 = @Field2
        WHERE id = @id;
    ELSE
        INSERT INTO pub.table1 (id, Field1, Field2) 
        VALUES (@id, @Field1, @Field2);
    END IF;
    
    END $$;";
    
    cmd.Parameters.AddWithValue("@id", 1);
    cmd.Parameters.AddWithValue("@Field1", "text");
    cmd.Parameters.AddWithValue("@Field2", "text2");
    

    否则,与postgres的连接和(经典)查询在传递参数时也会起作用;例如:

    cmd.CommandText = @"SELECT * FROM pub.table1 WHERE id = @id;";
    

    是否无法将参数传递给“DO”块,或者我遗漏了什么?

    谢谢您。 米

    0 回复  |  直到 6 年前