如何使用嵌套 Table PL/SQL 集合设置批量收集限制?

How to set a Limit on Bulk Collect with a Nested Table PL/SQL Collection?

我正在尝试使用 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;
/

不能在主查询中使用保留字 Limit,这只能使用游标进行批量收集以优化服务器内存。在您的情况下,在 Where.

中使用 Ronum < 100
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;