Я использую базу данных Oracle, где у меня есть таблица, содержащая 20 записей
CREATE TABLE MyTable (
MY_RECORD_ID NUMBER PRIMARY KEY,
SOME_DATA_1 VARCHAR2(200),
SOME_DATA_2 VARCHAR2(200)
);
INSERT INTO MyTable VALUES (1, 'BLAH1', 'BLAH2');
INSERT INTO MyTable VALUES (2, 'BLAH1', 'BLAH2');
INSERT INTO MyTable VALUES (3, 'BLAH1', 'BLAH2');
INSERT INTO MyTable VALUES (4, 'BLAH1', 'BLAH2');
INSERT INTO MyTable VALUES (5, 'BLAH1', 'BLAH2');
INSERT INTO MyTable VALUES (6, 'BLAH1', 'BLAH2');
INSERT INTO MyTable VALUES (7, 'BLAH1', 'BLAH2');
INSERT INTO MyTable VALUES (8, 'BLAH1', 'BLAH2');
INSERT INTO MyTable VALUES (9, 'BLAH1', 'BLAH2');
INSERT INTO MyTable VALUES (10, 'BLAH1', 'BLAH2');
INSERT INTO MyTable VALUES (11, 'BLAH1', 'BLAH2');
INSERT INTO MyTable VALUES (12, 'BLAH1', 'BLAH2');
INSERT INTO MyTable VALUES (13, 'BLAH1', 'BLAH2');
INSERT INTO MyTable VALUES (14, 'BLAH1', 'BLAH2');
INSERT INTO MyTable VALUES (15, 'BLAH1', 'BLAH2');
INSERT INTO MyTable VALUES (16, 'BLAH1', 'BLAH2');
INSERT INTO MyTable VALUES (17, 'BLAH1', 'BLAH2');
INSERT INTO MyTable VALUES (18, 'BLAH1', 'BLAH2');
INSERT INTO MyTable VALUES (19, 'BLAH1', 'BLAH2');
INSERT INTO MyTable VALUES (20, 'BLAH1', 'BLAH2');
Что я хотел бы сделать, так это перебрать эту таблицу, выбирая 5 записей за раз, основываясь на столбце MY_RECORD_ID
. Появятся команды OFFSET
и FETCH
, которые позволят мне сделать это:
SELECT *
FROM MyTable
ORDER BY MY_RECORD_ID
OFFSET 0 ROWS -- start at the first row
FETCH NEXT 5 ROWS ONLY;
Я бы хотел вставить вышеприведенный оператор в цикл, чтобы я мог выполнять операции с данными для каждой из пяти строк (так что это будет выполнено в общей сложности 4 раза). Есть ли способ сделать это с помощью хранимой процедуры?