繁体   English   中英

与Oracle中的批量收集等效的SQL Server

[英]SQL Server Equivalent of Bulk Collect in Oracle

我想在SQL Server中复制以下代码。 我环顾四周,似乎唯一的选择就是只使用一个直线光标,但是有更好的方法:

DECLARE

    CURSOR cursor1 IS
    SELECT *
    FROM table1;

    TYPE cursor_aat IS TABLE OF cursor1%ROWTYPE;        

    l_cursor cursor_aat;
BEGIN        
    OPEN cursor1;

    LOOP

        FETCH cursor1
        BULK COLLECT INTO l_cursor LIMIT 200;

        FOR INDX IN 1 .. l_cursor.COUNT LOOP
            IF (CheckSomeData() = 0) THEN           
                INSERT INTO new_table
                (col1, col2)
                values
                (l_cursor(INDX).col1, l_cursor(INDX).col2);

                INSERT INTO new_table2
                ...

            end if

        END LOOP;

        EXIT WHEN l_cursor.COUNT < 200;
...

如果要一次执行200行,则可以使用临时表和游标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM