目前,我有一个运行许多不同查询的存储过程。特别是一个查询将执行存储在我的计算机上的CSV文件的批量插入,当文件可用时,此批量插入可以很好地工作。不幸的是,我不总是有一个文件要检索此查询,导致我的存储过程停止并在该文件不存在时抛出错误。处理这种情况的好方法是什么,以便存储过程继续完全执行,即使没有要检索的批量插入查询的文件?
我尝试使用try catch
块,但是当我尝试运行该过程时,它仍然给了我相同的问题。话虽如此,它可能只是因为我没有正确实现try catch
块。除了try catch
块之外,我还可以尝试其他方式,这只是我见过的最常用的方法。
答案 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