C#将参数传递给Postgres NPGSQLDO命令块

C#将参数传递给Postgres NPGSQLDO命令块,c#,postgresql,npgsql,sqlcommand,C#,Postgresql,Npgsql,Sqlcommand,我得到错误“42883:运算符不存在:integer=@integer”Npgsql.postgresception 尝试向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

我得到错误“42883:运算符不存在:integer=@integer”Npgsql.postgresception 尝试向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的连接和(经典)查询也会起作用;e、 g:

cmd.CommandText = @"SELECT * FROM pub.table1 WHERE id = @id;";
是否无法将参数传递给“DO”块,或者我是否遗漏了什么

多谢各位。 M

可能的重复项