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

时间:2018-08-30 12:33:24

标签: c# postgresql npgsql sqlcommand

我收到错误“ 42883:运算符不存在:整数= @整数” 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”块,或者我丢失了某些东西?

谢谢。 M

0 个答案:

没有答案