SQL如何正确使用TRY / CATCH / THROW语句和Next

时间:2015-06-22 15:06:55

标签: sql try-catch ssms throw

我正在尝试使用带有SQL的 TRY / CATCH / THROW 语句,但我不熟悉如何为最有效的代码输入所有内容,以及将与每个代码配对的代码那些方法。

我目前的代码是

BEGIN TRY
    Insert Into ENT_ITEM_MASTER
    from Sheet1$
    WHERE ITEM_CODE = ENT_ITEM_MASTER
END TRY

BEGIN CATCH
    If ITEM_CODE <> ENT_ITEM_MASTER
        THROW;
END CATCH;

我想要它做的是,如果ITEM_CODE <> ENT_ITEM_MASTER那么它将跳过该项目代码并转到下一个。

如果有人可以解释如何正确抛出该异常并添加一些确切CATCHTHROW的详细信息,那么我可以更好地了解它们的用途,这将是非常有帮助的

我有一个链接服务器到一个包含16,000行信息​​的Excel文件。我的代码将该信息插入到项目列表中。它与另一个程序链接,这样,如果我搜索一个项目代码,它上面的所有信息都会出现。

编辑以解决问题。试用代码:

Insert Into ENT_ITEM_MASTER
from Sheet1$
WHERE ITEM_CODE = ENT_ITEM_MASTER


If ITEM_CODE <> ENT_ITEM_MASTER
    Insert Into ENT_ITEM_MASTER
    from Sheet1$
    WHERE ITEM_CODE = ENT_ITEM_MASTER
Else

2 个答案:

答案 0 :(得分:0)

您确定需要尝试/捕获/抛出吗?看起来你可以做一个for循环,为每一行循环使用嵌套的if语句来检查如果ITEM_CODE&lt;&gt; ENT_ITEM_MASTER。如果满足条件则     插入ENT_ITEM_MASTER     来自Sheet1 $     在哪里ITEM_CODE = ENT_ITEM_MASTER 其他()。这有意义吗?

答案 1 :(得分:0)

在重新思考你的问题后,我相信一个案例陈述是最好的。

尝试:  ITEM_CODE = ENT_ITEM_MASTER那时的情况      插入ENT_ITEM_MASTER      来自Sheet1 $      在哪里ITEM_CODE = ENT_ITEM_MASTER  END