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;
...
1 ответ
Вы можете использовать временную таблицу и курсор, если хотите сделать 200 строк одновременно.