Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Método de coleta:função LIMIT no banco de dados Oracle




O tutorial de PL/SQL de hoje é sobre o método de coleta LIMIT. Já vimos 4 funções nesta série de métodos de coleta que são – Count, Exists, First e Last. Limite é a quinta função que aprenderemos hoje.

O que é o método de coleta LIMIT?


O método de coleção LIMIT, que na verdade é uma função PL/SQL, retorna o número máximo de elementos que um VARRAY pode conter. Isso significa que usando esta função você pode descobrir quantos elementos você pode armazenar em um VARRAY.

O que o método de coleta LIMIT retorna?


O método de coleta LIMIT retorna um valor do tipo PLS_INTEGER?

Esta função também funciona com outras duas coleções de tabelas aninhadas e matriz associativa?


O método de coleta LIMIT só funciona com VARRAY. Se for aplicado à tabela aninhada ou matriz associativa, essa função retornará um valor NULL ou No. Portanto, a resposta é:Não, a função de coleção LIMIT não funciona com tabelas aninhadas e matrizes associativas.

Qual ​​é a especificação da função de coleção LIMIT?


A especificação da função de coleção LIMIT é:
FUNCTION LIMIT RETURN pls_integer;

A função de coleção LIMIT gera alguma exceção? Se sim, quando?


Sim, a função LIMIT gera a exceção COLLECTION_IS_NULL se for aplicada a uma tabela aninhada não inicializada ou a um VARRAY.

Você pode nos mostrar um exemplo de como usar a função LIMIT?


Claro, por que não. Aqui está um exemplo muito simples demonstrando como usar corretamente a função de coleção LIMIT com VARRAYs.
SET SERVEROUTPUT ON;
DECLARE
    TYPE inBlock_vry IS VARRAY (5) OF NUMBER;
    vry_obj inBlock_vry := inBlock_vry();
BEGIN
 --Let's find out total number of indexes in the above VARRAY
    DBMS_OUTPUT.PUT_LINE ('Total Indexes '||vry_obj.LIMIT);
END;
/

Não temos a função COUNT que fornece a mesma informação?


A função de coleção LIMIT retorna o número total de índices de um VARRAY independentemente de esses índices estarem vazios ou conterem alguns dados . Ele verifica a definição do VARRAY e vê o número total de elementos que foi projetado para armazenar e retorna esse número.

Enquanto a função de coleção COUNT retorna o número de índices que não estão vazios e manter alguns dados .

Dê uma olhada neste programa PL/SQL. Isso ajudará você a entender a diferença entre o método de coleta COUNT e LIMIT com mais clareza.
SET SERVEROUTPUT ON;
DECLARE
    --Create VARRAY of 5 element
    TYPE inblock_vry IS
        VARRAY ( 5 ) OF NUMBER;
    vry_obj   inblock_vry := inblock_vry ();
BEGIN
    --Insert into VARRAY
    	vry_obj.extend;
    	vry_obj(1) := 10 * 2; 
dbms_output.put_line('Total Number of Index ' || vry_obj.limit);
dbms_output.put_line('Total Number of Index which are occupied ' || vry_obj.count);
END;
/

No código acima temos um VARRAY que é capaz de conter 5 elementos do tipo de dados NUMBER. Na seção de execução, temos duas instruções de saída do DBMS. A primeira instrução de saída que está mostrando o resultado da função LIMIT retornará 5 porque essa é a força total do nosso VARRAY enquanto a segunda instrução de saída retornará 1 porque entre esses 5 índices há apenas um índice que possui alguns dados armazenados nele.

Você disse no vídeo que nos mostrará como descobrir o número total de elementos que não foram usados ​​para armazenar dados em um varray usando o método de coleta LIMIT?

É assim mesmo? Eu disse isso? Estou só brincando.

Descobrir o número de índices vagos para seu uso em um VARRAY é muito fácil. Deixe-me dizer-lhe como.

Como eu disse acima, a função de coleção COUNT retorna o número de índices que possuem dados armazenados neles e a função de coleção LIMIT retorna o número total de índices que um VARRAY pode acomodar.

Se você subtrair o resultado da função count do resultado da função LIMIT, você obterá o número total de elementos deixados sem uso para armazenar dados em um varray. Por exemplo
DECLARE
    --Create VARRAY of 5 element
    TYPE inblock_vry IS
        VARRAY ( 5 ) OF NUMBER;
    vry_obj   inblock_vry := inblock_vry ();
BEGIN
    --Insert into VARRAY
    vry_obj.extend;
    vry_obj(1) := 10 * 2;
    dbms_output.put_line('Total Number of Index ' || vry_obj.limit);
    dbms_output.put_line('Total Number of Index which are occupied ' || vry_obj.count);
    dbms_output.put_line('Total Number of Vacant index left for use '
                            || (vry_obj.limit - vry_obj.count) );
END;
/

Esse é o tutorial de PL/SQL respondendo a todas as perguntas que você pode esperar no exame de certificação, bem como na sua entrevista sobre o método de coleta LIMIT no banco de dados Oracle.

Existe alguma coisa que eu esqueci de abordar ou mencionar neste tutorial? Se sim, então, por favor, deixe-me. Escreva para mim no meu Twitter ou Facebook.

Obrigado tenha um ótimo dia.