我想在 SQL Server 2005 中编写一个非 CLR 用户定义函数。该函数接受输入字符串并返回输出字符串。如果输入字符串无效,那么我想向调用者指示错误。
我的第一个想法是使用 RAISERROR 来引发异常。但是,SQL Server 不允许在 UDF 中执行此操作(尽管您可以在基于 CLR 的 UDF 中引发异常,请看图)。
我的最后手段是如果输入值有错误,则从函数返回 NULL(或其他错误指示符值)。但是,我不喜欢这个选项,因为它:
- 不向调用者提供任何有用的信息
- 不允许我返回 NULL 来响应有效输入(因为它被用作错误代码)。
是否有任何调用者友好的方法可以在 SQL Server 中出现错误时停止函数?
看起来 SQL Server UDF 在这种(以及许多其他)方式上有点受限。
你真的无能为力——(目前)就是这样。您可以定义 UDF,以便可以通过其返回值(例如,在发生错误时返回 NULL)来发回错误条件信号,或者您几乎必须求助于编写存储过程,该存储过程可以具有更多的错误处理并允许 RAISERROR 等等。
因此,要么将 UDF 设计为不需要错误条件的特定信号,要么必须重新构建使用存储过程的方法(存储过程可以具有多个 OUTPUT 参数,因此也可以返回错误代码以及数据负载,如果您需要),或 UDF 的托管 CLR 代码。
抱歉,我没有更好的主意 - 恐怕现在,这些都是你的选择 - 你可以选择。
Marc
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)