Npgsql 找不到带有 XML 参数的函数,而是寻找 TEXT
Npgsql not finding function with XML param, looking for TEXT instead
我有一个名为 test_xml_func 的 Postgres SQL 函数,它接受类型为 XML 的参数。使用 Npgsql 在 .NET 中调用此函数时,我收到一条错误消息,提示 text_xml_func(text) 不存在。有没有办法让它寻找 XML 函数而不必将 NpgsqlParameter 的 NpgsqlDbType 属性 设置为 XML?
我正在使用 Npgsql v3.0.3 和 Postgres 9.5 Beta 1。
Postgres 函数:
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
不,您必须将 NpgsqlParameter 的 NpgsqlDbType 设置为 XML。您有什么特别的原因想避免这种情况吗?
当 NpgsqlDbType 和 DbType 未在 NpgsqlParameter 上设置时,Npgsql 默认为类型推断 PostgreSQL 类型。在字符串值的情况下,这是一个 PostgreSQL 文本,这就是为什么您会收到 text_xml_func(text) 未定义的错误。
我有一个名为 test_xml_func 的 Postgres SQL 函数,它接受类型为 XML 的参数。使用 Npgsql 在 .NET 中调用此函数时,我收到一条错误消息,提示 text_xml_func(text) 不存在。有没有办法让它寻找 XML 函数而不必将 NpgsqlParameter 的 NpgsqlDbType 属性 设置为 XML?
我正在使用 Npgsql v3.0.3 和 Postgres 9.5 Beta 1。
Postgres 函数:
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
不,您必须将 NpgsqlParameter 的 NpgsqlDbType 设置为 XML。您有什么特别的原因想避免这种情况吗?
当 NpgsqlDbType 和 DbType 未在 NpgsqlParameter 上设置时,Npgsql 默认为类型推断 PostgreSQL 类型。在字符串值的情况下,这是一个 PostgreSQL 文本,这就是为什么您会收到 text_xml_func(text) 未定义的错误。