На сервере SQL я могу использовать sql:variable
:
string sql = "select * from mytable where xml_column.exist('//Tag[text()=sql:variable(\"@value\")]') = 1";
Я пытался найти аналогичный способ передачи параметра в NpgsqlCommand. Этот, например, не дает сбоев, но и не возвращает никаких данных:
string sql = "select * from mytable where xmlexists('//Tag[text()=\"@value\"]' PASSING BY REF xml_column) = true";
Есть ли способ сделать это? Спасибо!
Вот фрагмент кода:
string connstr = "PORT=5432;DATABASE=mydb;HOST=myhost;USER ID=myuser;PASSWORD=mypassword";
using (NpgsqlConnection connection = new NpgsqlConnection(connstr))
{
connection.Open();
string sql = "select xml_column from mytable where xmlexists('//Tag[text()=\"@value\"]' PASSING BY REF xml_column) = true";
using (var cmd = connection.CreateCommand())
{
cmd.CommandText = sql;
cmd.Parameters.AddWithValue("@value", "my value");
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
reader[0].Dump();
}
}
}
connection.Close();
}