Oracle Cursor para Loop

Oracle Cursor para Loop
Um cursor para loop é um tipo de loop que permite buscar e processar as linhas de um cursor de banco de dados sem se preocupar em lidar manualmente no ciclo de execução.

Um cursor para o loop é uma extensão do loop for em PL/SQL e permite executar um bloco de código para cada linha em um conjunto resultante. Isso é muito útil, pois permite que você realize cálculos extensos de maneira rápida e eficiente em um único cálculo sem carregar os dados na memória.

Oracle Cursor para Loop

O loop for pega uma linha do conjunto resultante no índice de loop para cada iteração. Se não houver fila, o loop for fechado o cursor.

A seguir, mostra a sintaxe básica do cursor para o loop no Oracle:

Para registro em Cursor_Name
LAÇO
-- Aplique este bloco a cada linha
Loop final;

Na sintaxe fornecida, o registro representa o nome da variável que precende cada linha no cursor.

O Cursor_Name no loop especifica um cursor explícito que você deseja percorrer. Observe que um cursor deve ser aberto e buscado no registro antes de usá -lo em um cursor para loop.

Se você não deseja criar um cursor explícito, o loop cria implicitamente um índice de loop como uma variável de registro de %rowtype quando você pula o cursor_name.

Exemplo de Cursor Oracle para Loop

Vamos dar uma olhada em alguns exemplos básicos do cursor por loop nos bancos de dados Oracle.

declarar
Cursor emp_cursor é
Selecione First_Name, Last_Name
de funcionários;
começar
para funcionário em emp_cursor
laço
Dbms_output.Put_line (funcionário.primeiro_name || "|| funcionário.sobrenome);
loop final;
fim;

No código fornecido, declaramos um cursor chamado EMP_CURSOR. Em seguida, preenchemos esse cursor com os dados da tabela dos funcionários usando as colunas First_Name e Last_Name.

Em seguida, usamos um cursor para o loop buscar e processar os dados em cada linha do conjunto de resultados. Observe que a variável do funcionário armazena cada linha no EMP_CURSOR.

O loop concatena as colunas First_Name e Last_Name e imprime o resultado usando o dbms_output.Função put_line.

O mecanismo de banco de dados fecha automaticamente o cursor assim que o loop termina.

Isso deve retornar os seguintes resultados, demonstrando como podemos usar uma definição explícita de cursor para processar dados de uma tabela:

Cursor implícito do Oracle

Se você não deseja criar um cursor explícito, pode permitir que o mecanismo de banco de dados crie um e gerenciá -lo para você, omitindo o nome do cursor, como mostrado no seguinte:

COMEÇAR
Para funcionário em (selecione First_Name, Last_Name
De funcionários) loop
Dbms_output.Put_line (funcionário.primeiro_name || "|| funcionário.sobrenome);
Loop final;
FIM;

Isso deve retornar um resultado semelhante como um cursor explícito.

Conclusão

Neste post, você encontrou o cursor para o Loop em bancos de dados Oracle para buscar e processar cada linha de um conjunto de resultados.