gpt4 book ai didi

sql-server - 用户定义函数中的错误处理

转载 作者:行者123 更新时间:2023-12-02 11:32:32 25 4
gpt4 key购买 nike

我想在 SQL Server 2005 中编写一个非 CLR 用户定义函数。该函数接受输入字符串并返回输出字符串。如果输入字符串无效,那么我想向调用者指示错误。

我的第一个想法是使用 RAISERROR 来引发异常。但是,SQL Server 不允许在 UDF 中执行此操作(尽管您可以在基于 CLR 的 UDF 中引发异常,请看图)。

如果输入值有错误,我的最后手段是从函数返回 NULL(或其他错误指示​​值)。但是,我不喜欢这个选项,因为它:

  1. 不向调用者提供任何有用的信息
  2. 不允许我返回 NULL 来响应有效输入(因为它被用作错误代码)。

是否有任何调用者友好的方法可以在 SQL Server 中出现错误时停止函数?

最佳答案

看起来 SQL Server UDF 在这种(以及许多其他)方式上有点受限。

你真的无能为力——(目前)就是这样。您可以定义 UDF,以便可以通过其返回值(例如,在发生错误时返回 NULL)来发回错误条件信号,或者您几乎必须求助于编写存储过程,该存储过程可以具有更多的错误处理并允许 RAISERROR 等等。

因此,要么将 UDF 设计为不需要错误条件的特定信号,要么必须重新构建使用存储过程的方法(存储过程可以具有多个 OUTPUT 参数,因此也可以随数据负载一起返回错误代码) ,如果您需要的话),或者您的 UDF 的托管 CLR 代码。

抱歉,我没有更好的主意 - 恐怕目前这些都是您的选择 - 选择您的选择。

马克

关于sql-server - 用户定义函数中的错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1240541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com