Вопрос

У меня возникла проблема, из-за которой столбец в моей таблице содержит данные, которые кодируются с использованием метода System.Xml.XmlConvert.Encode.

Теперь мне нужно манипулировать этими данными в SQL и я не нашел способа дублировать System.Xml.XmlConvert.Метод декодирования.

Итак, я исследовал, как я могу использовать System.Пространство имен XML в SQL для доступа к этому методу без необходимости оборачивать его внутри одной из моих собственных сборок.Возможно ли это?т. е.как я могу получить доступ к этой сборке напрямую через T-SQL?

Это было полезно?

Решение

Существует довольно много примеров написания надстроек с использованием .NET для SQL.Я полагаю, что для создания надстройки вам понадобится SQL 2005 или новее.

Вот пример, который особенно полезен.

Создание пользовательской функции CLR SQL для проверки значений с использованием регулярных выражений @ MSDN

В вашем случае вы, вероятно, захотите написать функцию, которая принимает байт[] и возвращает строку (декодирование), вместе с соответствующей функцией, которая принимает строку и возвращает байт[].

На самом деле я не уверен, что вы можете напрямую использовать byte[] , но вы должны быть в состоянии написать соответствующую функцию-оболочку в SQL, которая может принимать шестнадцатеричную строку и превращать ее в varbinary(), если это необходимо.

Редактировать:

Вот несколько более надежных ссылок на другие ссылки, которые включены в предыдущую ссылку, на случай, если она когда-нибудь исчезнет.

Как сделать:Создайте и запустите пользовательскую функцию CLR SQL @ MSDN

Пользовательские атрибуты для подпрограмм CLR @ TechNet

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top