如何跳过存储过程中的错误

时间:2015-09-08 19:36:33

标签: sql sql-server tsql

目前,我有一个运行许多不同查询的存储过程。特别是一个查询将执行存储在我的计算机上的CSV文件的批量插入,当文件可用时,此批量插入可以很好地工作。不幸的是,我不总是有一个文件要检索此查询,导致我的存储过程停止并在该文件不存在时抛出错误。处理这种情况的好方法是什么,以便存储过程继续完全执行,即使没有要检索的批量插入查询的文件?

我尝试使用try catch块,但是当我尝试运行该过程时,它仍然给了我相同的问题。话虽如此,它可能只是因为我没有正确实现try catch块。除了try catch块之外,我还可以尝试其他方式,这只是我见过的最常用的方法。

1 个答案:

答案 0 :(得分:1)

你应该能够像这样尝试捕获:

BEGIN TRY
    -- Code that might error here
END TRY
BEGIN CATCH
    -- Handle the error here
END CATCH

但在您的情况下,您的错误是可预测的,您可以检查文件是否存在,然后使用if语句仅在存在的情况下执行工作。

以下是检查文件是否存在的方法。

@path替换为您的文件路径。例如:N'C:\Temp\Test.csv'

DECLARE @result INT
EXEC master.dbo.xp_fileexist @path, @result OUTPUT

IF (@result = 1)
BEGIN
    -- Do your bulk insert here.
END