.net Npgsql未找到具有XML参数的函数,而是查找文本
我有一个名为test_xml_func的Postgres SQL函数,它接受xml类型的参数。在.NET中使用Npgsql调用此函数时,我收到一个错误,表示text\u xml\u func(text)不存在。有没有一种方法可以让它在不必将NpgsqlParameter的NpgsqlDbType属性设置为XML的情况下查找XML函数 我正在使用NPGSQLv3.0.3和Postgres9.5Beta1 博士后功能:.net Npgsql未找到具有XML参数的函数,而是查找文本,.net,postgresql,npgsql,.net,Postgresql,Npgsql,我有一个名为test_xml_func的Postgres SQL函数,它接受xml类型的参数。在.NET中使用Npgsql调用此函数时,我收到一个错误,表示text\u xml\u func(text)不存在。有没有一种方法可以让它在不必将NpgsqlParameter的NpgsqlDbType属性设置为XML的情况下查找XML函数 我正在使用NPGSQLv3.0.3和Postgres9.5Beta1 博士后功能: CREATE OR REPLACE FUNCTION test_xml_func
CREATE OR REPLACE FUNCTION test_xml_func(_xml XML)
RETURNS BOOLEAN AS
$$
SELECT TRUE;
$$ LANGUAGE SQL;
.NET呼叫
Using connection As New NpgsqlConnection(ConnectionString)
Using cmd As New NpgsqlCommand("test_xml_func", connection) With {.CommandType = CommandType.StoredProcedure}
cmd.Parameters.Add(New NpgsqlParameter("_xml", "<ITEMS><ITEM><VALUE>1</VALUE></ITEM></ITEMS>"))
connection.Open()
System.Console.WriteLine(cmd.ExecuteScalar())
End Using
End Using
将连接用作新的NpgsqlConnection(ConnectionString)
使用cmd作为新的NpgsqlCommand(“test_xml_func”,connection)和{.CommandType=CommandType.StoredProcedure}
cmd.Parameters.Add(新的NpgsqlParameter(“\uXML”,“1”))
connection.Open()
System.Console.WriteLine(cmd.ExecuteScalar())
终端使用
终端使用
否,必须将NpgsqlDbType参数的NpgsqlDbType设置为XML。你有什么特别的理由想避免这种情况吗
当NpgsqlDbType和DbType未在NpgsqlParameter上设置时,Npgsql默认为推断PostgreSQL类型的类型。在字符串值的情况下,这是一个PostgreSQL文本,这就是为什么您会得到一个错误,即未定义text_xml_func(text)。我们正在从MSSQL转换到Postgres的过程中,我们有一系列DB调用,它们将xml作为文本传递进来,如上所示。找到它们并将它们更改为将NpgsqlDbType设置为XML将是一件痛苦的事情,所以我们希望有另一种方法。看起来我们唯一的选择是这个,或者在使用xpath之前将它们作为文本并转换为XML。谢谢你的回复!