【问题标题】:SQL How to correctly use TRY/CATCH/THROW statement and NextSQL 如何正确使用 TRY/CATCH/THROW 语句和 Next
【发布时间】:2015-09-08 02:41:40
【问题描述】:

我正在尝试使用带有 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 &lt;&gt; ENT_ITEM_MASTER 那么它将跳过该项目代码并转到下一个。

如果有人可以解释如何正确抛出该异常,并添加一些关于 CATCHTHROW 究竟做了什么的细节,以便我能更好地了解它们的用途,那将非常有帮助。

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

EDIT 解决答案。试用码:

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

【问题讨论】:

    标签: sql try-catch ssms throw


    【解决方案1】:

    您确定需要 try/catch/throw 吗?看来您可以执行一个 for 循环,该循环为每一行循环,其中包含一个嵌套的 if 语句来检查 If ITEM_CODE ENT_ITEM_MASTER。如果条件满足那么 插入 ENT_ITEM_MASTER 来自 Sheet1$ WHERE ITEM_CODE = ENT_ITEM_MASTER 别的 ( )。这有意义吗?

    【讨论】:

    • 如果那是更好的方法,那绝对是!有人告诉我 TRY/CATCH 是最好的,所以我只是基于我的试验/错误。我在上述问题中输入的代码看起来正确吗?我对 SQL 不是很熟悉,所以我不知道我是否需要 End If 语句或括号,或者只是它的格式是否正确@Hayes
    【解决方案2】:

    在重新考虑您的问题后,我认为最好使用案例陈述。

    尝试: CASE WHEN ITEM_CODE = ENT_ITEM_MASTER THEN 插入 ENT_ITEM_MASTER 来自 Sheet1$ WHERE ITEM_CODE = ENT_ITEM_MASTER 结束

    【讨论】:

    • 这似乎没有提到ITEM_CODE &lt;&gt; ENT_ITEM MASTER 的位置。那会解决这个问题,还是除此之外我还应该实施其他一些措施? @海耶斯
    • 如果我理解正确,您不打算在 ITEM_CODE ENT_ITEM_MASTER 时执行任何操作。如果这是正确的,那么它应该被照顾。如果您确实打算在它们不相等时执行命令,您可以在末尾添加一个 else。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 2010-12-14
    • 1970-01-01
    • 2013-11-14
    • 1970-01-01
    • 2018-10-10
    • 2023-03-21
    相关资源
    最近更新 更多