如何设置嵌套表PL / SQL集合的批量收集限制?

时间:2019-05-14 15:46:00

标签: oracle plsql nested-table bulk-collect rowtype

我正在尝试使用limit关键字对数据库查询设置限制。

这是我当前没有限制关键字的工作查询。

class YourView(View):
    def post(self, request, *args, **kwargs):
        #get the selected quizs
        quizs = request.POST.getlist('quiz-pids')
        #retrieves thoses quizes from the database:
        items = ItemBatch.objects.filter(pid__in=quizs)
        #do something with each of them:
        for item_batch in items:
            #do something
            pass

我想避免使用游标,但仍使用如下所示的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;
/

1 个答案:

答案 0 :(得分:3)

在主查询中不能使用保留字Limit,这只能通过使用光标进行批量收集来优化服务器的内存。根据您的情况,在位置中使用 Rownum <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;