Pular para o conteúdo

Fóruns SQL e PL/SQL Arrays Arrays

#90516
fsitja
Participante

    É pelo que caminho que você estava indo. Declarando um type que contenha os campos que você precisa e outro type que seja um table do type anterior.

    Seu bulk collect deve conter uma cláusula de LIMIT. Senão o que pode acontecer se sua tabela tiver milhares (ou milhões) de linhas? Você vai consumir toda a memória do seu servidor com uma collection gigantesca.

    Um LIMIT razoável é de 100 registros por vez, fazendo 2 loops aninhados:
    um deles faz o fetch com bulk collect e o outro dentro percorre os registros com um for de 1 até “sua_tabela.count”, fazendo o processamento que você precisar.

    Tem vários exemplos na documentação oracle, usando object types. Mas dá para fazer com table de records também.

    Só um parêntese, se você usar nested table, dá para fazer um select no estilo:


    select col1, col2, col3
    from table(minha_tab_array)

    Só lembre que há chaveamento de contexto e tudo mais, mas é razoável pela flexibilidade que oferece.

    O link abaixo tem bastante sobre o que você procura:
    http://download.oracle.com/docs/cd/E118 … osites.htm