Эквивалент SQL Server для массового сбора в 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;
...

person Paul Michaels    schedule 21.09.2012    source источник


Ответы (1)


Вы можете использовать временную таблицу и курсор, если хотите сделать 200 строк одновременно.

person Lukos    schedule 21.09.2012