Preciso validar o XML usando XSD dentro do TSQL. Para tornar esta tarefa semi-automatizada, preciso fazer isso dentro da função TSQL.
Para fazer a validação, tenho que definir o valor para XML e, se não for válido, receberei um erro.
Meu problema é que dentro da função TSQL não consigo usar TRY / CATCH
. Esta é a maneira adequada e se é possível fazer isso?
Uma opção (possivelmente sua única opção se fazer isso no contexto de uma função escalar for um requisito difícil) é usar SQLCLR. As funções escalares SQLCLR podem fazer estruturas try/catch/finally dentro do código C# ou VB.NET. Então, você poderia passar tanto o documento XML quanto o XSD, ambos como o
SqlXml
tipo, e fazer a validação lá. Basta retornar umSqlBoolean
para saber se foi validado ou não.Certifique-se de fazer o seguinte para que a função SQLCLR possa participar de planos paralelos:
IsDeterministic = true
noSqlFunction
atributo.WITH PERMISSION_SET = SAFE
.