gpt4 book ai didi

c# - 在 SQLCLR 方法中使用 SqlXml 参数

转载 作者:太空宇宙 更新时间:2023-11-03 16:19:12 28 4
gpt4 key购买 nike

这是 SQL CLR,我只是想创建一个从 SQL 接收 XML 然后获取特定节点的值并返回它的函数:

[SqlFunction]
public static SqlString FnGetQuoteNumber(XmlDocument xmlDoc)
{
string nodeValue = null;

xmlDoc.Load(xmlDoc.ToString());

XmlNode node = xmlDoc.DocumentElement.SelectSingleNode("//Identifier[@name='Item1']");

if (xmlDoc.DocumentElement != null)
{
nodeValue = node.Attributes["value"].Value;
}

return new SqlString(nodeValue);
}

但后来我意识到,我的参数不应该声明为 SqlXml xmlDoc 而不是 XmlDocument xmlDoc 吗?

如果是这样,那么我不能执行上述操作,因为我不再处理 XmlDocument(没有 DocumentElement/selectSingleNode 等)。

SqlXml 执行此操作的正确方法是什么?

此外,当我尝试部署它时,我不断得到这个(我认为这与我试图作为参数传递的 XmlDocument 有关):

Beginning deployment of assembly SolutionName.dll to server localhost : DATABASE

The following error might appear if you deploy a SQL CLR project that was built for a version of the .NET Framework that is incompatible with the target instance of SQL Server: "Deploy error SQL01268: CREATE ASSEMBLY for assembly failed because assembly failed verification". To resolve this issue, open the properties for the project, and change the .NET Framework version.

c:\****** name.dll : Deploy error : Could not create a type for parameter System.Xml.XmlDocument xmlDoc

Build FAILED.

Time Elapsed 00:00:01.96

========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========

========== Deploy: 0 succeeded, 1 failed, 0 skipped ==========

谁能帮帮我?

XML 截图:

最佳答案

我认为您的 xmldoc.load 掌握着 secret 。如果您只是将 xml 作为字符串传递给 clr 过程会怎么样。然后您可以创建 xmlDoc 并将其从字符串加载到 clr 中。

如果这不起作用,则此线程似乎与您所说的很接近:CLR Link

我不能说错误......但上面的字符串方法可能会解决你的问题。

关于c# - 在 SQLCLR 方法中使用 SqlXml 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14585237/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com