【问题标题】:What are some alternatives to using a cursor in SQL Server 2008?在 SQL Server 2008 中使用游标有哪些替代方法?
【发布时间】:2011-03-25 07:13:41
【问题描述】:

我一直在创建使用 SSIS 将数据导入临时表的导入,然后使用存储过程,使用游标逐个遍历数据以处理数据并将信息插入到 3 个不同的表中。前 2 个表中的插入很复杂,因为如果已经存在具有相同数据的记录,则不会创建该记录。无论前 2 个表中是否插入了一条记录,都会返回记录或匹配记录的 ID 以在第三个表中使用。有没有使用光标的替代方法?

【问题讨论】:

    标签: sql-server-2008 cursor data-import


    【解决方案1】:

    如果没有看到您当前的代码,很难知道这是否合适,但我会看看

    1. MERGE 语句(允许为“匹配时”、“目标不匹配时”、“源不匹配时”等不同情况指定操作)和
    2. OUTPUT 子句(允许您捕获新更新的记录以进行处理)。

    【讨论】:

    • 我会尝试合并。我以前从未使用过。
    【解决方案2】:

    希望本文中的一些想法会有所帮助。如果您仍然需要帮助避免光标,我们需要查看您在光标中进行的处理的更好示例。

    http://wiki.lessthandot.com/index.php/Cursors_and_How_to_Avoid_Them

    【讨论】:

      【解决方案3】:

      这听起来像是用表变量和 while 循环的组合替换游标的完美候选者(多人已经测试和确认,几乎总是比游标更高效)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多