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.