SQL UDF 中的错误处理

Posted

技术标签:

【中文标题】SQL UDF 中的错误处理【英文标题】:Error Handling in SQL UDF 【发布时间】:2017-04-20 12:26:26 【问题描述】:

我正在 SQL Server 中创建 UDF。我不能在用户定义的函数中使用 try-catch 块。如何处理 UDF 中的异常或错误?

CREATE FUNCTION GET_POLICY_NO
(@POLICYID nvarchar(15))
 RETURNS varchar(30)
 AS
 BEGIN
 declare @Return varchar(30)
 select @return = (SELECT POLICY_NO FROM tblPolicy WHERE POLICY_ID = @POLICYID)
return @return
 end

虽然 tblPolicy 不存在,但它会报错。像SP一样怎么处理?

【问题讨论】:

最好把你的代码粘贴到这里,如果不查看你的代码就无济于事......为什么你不能使用 try 和 catch 块? @long 在问题中添加代码。 你可以试试我的回答吗 创建一个总是失败的函数有什么意义? 以上代码只是举例。这不是我的要求。其实这个问题是在一次采访中被问到的。 “如何处理错误。在 Udf 中” 【参考方案1】:

您应该检查 This 以获得一些答案

我也有一些建议:

    由于您无法在函数中打印或使用 try catch 块,因此请改用存储过程,尽管我认为您无法捕获“Invalid object name 'tblPolicy'”错误。我建议检查表是否存在,然后执行查询。

希望对你有帮助。

【讨论】:

以上代码只是举例。这不是我的要求。实际上这个问题是在一次采访中被问到的。 “如何处理错误。在 Udf 中” @SurajKMad 我明白了,但这有点误导,而且我相信您在提问之前可以找到很多关于这个主题的信息!干杯

以上是关于SQL UDF 中的错误处理的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery UDF 内存在多行上超出错误,但在单行上工作正常

sql 使用错误号处理SQL中的错误

Scala Spark 中的 udf 运行时错误

pl/sql 中的错误处理

错误恢复 PL/SQL oracle 中的下一种错误处理类型

oracle sql中存储过程中的错误处理失败