Работа с параметром SqlXml в методе SQLCLR



Это SQL CLR, я просто пытаюсь создать функцию, которая получает XML из SQL, а затем получает значение для определенного узла и возвращает его:



[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, и т.д.).



Каков был бы правильный способ сделать это для SqlXmls?



Также, когда я пытаюсь разверните это, я продолжаю получать это (что, я думаю, связано с XmlDocument, который я пытаюсь передать в качестве параметра):




Начало развертывания Assembly SolutionName.dll для сервера localhost: DATABASE



При развертывании проекта SQL CLR, созданного для версии .NET Framework, несовместимой с целевым экземпляром SQL Server, может появиться следующая ошибка: "Ошибка развертывания SQL01268: создать сборку для сборки не удалось, поскольку сборка не прошла проверку". Чтобы устранить эту проблему, откройте свойства проекта и измените версию платформы .NET Framework.



C: * * * * * * имя.dll : ошибка развертывания: не удалось создать тип для системы параметров.XML.XmlDocument xmlDoc



Сборка не удалась.



Время Истекло 00: 00: 01.96



========== Сборка: 1 успешно или актуально, 0 неудачно, 0 пропущено ==========



========== развертывание: 0 успешно, 1 не удалось, 0 пропущено ==========




Любой может дать мне рука?



Скриншот XML:



627   1  

1 ответ:

Я думаю, ваш xmldoc.груз хранит тайну. Что делать, если вы просто передали xml как строку в процедуру clr. Затем вы можете создать xmlDoc и загрузить его в clr из строки.

Если это не сработает, этот поток, казалось, был близок к тому, о чем вы говорили:CLR Link

Я не мог сказать об ошибке...но метод, описанный выше, может решить вашу проблему.

Comments

    Ничего не найдено.