我需要在 TSQL 中使用 XSD 验证 XML。为了使这项任务半自动化,我需要在 TSQL 函数中执行此操作。
为了进行验证,我必须将值设置为 XML,如果它无效,我将收到错误消息。
我的问题是我无法使用 TSQL 函数内部TRY / CATCH
。这是正确的方法吗?是否有可能这样做?
我需要在 TSQL 中使用 XSD 验证 XML。为了使这项任务半自动化,我需要在 TSQL 函数中执行此操作。
为了进行验证,我必须将值设置为 XML,如果它无效,我将收到错误消息。
我的问题是我无法使用 TSQL 函数内部TRY / CATCH
。这是正确的方法吗?是否有可能这样做?
一种选择(如果在标量函数的上下文中执行此操作是一项硬性要求,则可能是您唯一的选择)是使用 SQLCLR。SQLCLR 标量函数可以在 C# 或 VB.NET 代码中执行 try / catch / finally 结构。因此,您可以将 XML 文档和 XSD 作为
SqlXml
类型传入,并在那里进行验证。只需返回一个SqlBoolean
它是否通过验证。请务必执行以下操作,以便 SQLCLR 函数可以参与并行计划:
IsDeterministic = true
在SqlFunction
属性中指定。WITH PERMISSION_SET = SAFE
。