Как установить ограничение на массовый сбор с помощью вложенной таблицы PL / SQL Collection? - PullRequest
1 голос
/ 14 мая 2019

Я пытаюсь установить лимит для запроса к базе данных с ключевым словом limit.

Это мой текущий рабочий запрос без ключевого слова limit.

DECLARE
   TYPE NESTED_TABLE_DECLARATION IS TABLE OF SCHEMA.TABLE_NAME%ROWTYPE;
   NESTED_TABLE NESTED_TABLE_DECLARATION;
BEGIN
   SELECT * BULK COLLECT INTO NESTED_TABLE FROM SCHEMA.TABLE_NAME;
END;
/

Я хочу избежатьиспользуя курсор, но все еще используйте ключевое слово limit, как показано ниже.

DECLARE
   TYPE NESTED_TABLE_DECLARATION IS TABLE OF SCHEMA.TABLE_NAME%ROWTYPE;
   NESTED_TABLE NESTED_TABLE_DECLARATION;
BEGIN
   SELECT * BULK COLLECT LIMIT 100 INTO NESTED_TABLE FROM SCHEMA.TABLE_NAME;
END;
/

1 Ответ

3 голосов
/ 15 мая 2019

Невозможно использовать зарезервированное слово Limit в вашем основном запросе, это работает только при использовании курсора для массовой коллекции, чтобы оптимизировать память вашего сервера.В вашем случае используйте Rownum <100 </strong> в Где .

SELECT * BULK COLLECT INTO NESTED_TABLE FROM SCHEMA.TABLE_NAME WHERE rownum <= 1000;

Или Oracle12c

SELECT * BULK COLLECT INTO NESTED_TABLE FROM SCHEMA.TABLE_NAME FETCH FIRST 1000 ROWS ONLY;
...