Articles

Oracle PL/SQL Cursor: Implícito e Explícito Cursor PARA o Loop [Exemplo]

o Que é o CURSOR em PL/SQL?

um Cursor é um cursor para esta área de contexto. Oracle cria uma área de contexto para processar uma declaração SQL que contém todas as informações sobre a declaração.

PL / SQL permite ao programador controlar a área de contexto através do cursor. Um cursor contém as linhas devolvidas pela instrução SQL. O conjunto de linhas que o cursor mantém é referido como conjunto activo., Estes Cursores também podem ser nomeados para que possam ser referidos de outro lugar do Código.

neste tutorial você vai aprender

  • Cursor Implícito
  • Explícito Cursor
  • Atributos de Cursor
  • PARA Loop Cursor instrução

O cursor é de dois tipos.

  • Cursor implícito
  • Cursor explícito

Cursor implícito

sempre que quaisquer operações de UML ocorrem na base de dados, é criado um cursor implícito que mantém as linhas afectadas, nessa operação em particular., Estes Cursores não podem ser nomeados e, portanto, não podem ser controlados ou referidos a partir de outro lugar do Código. Podemos referir-nos apenas ao cursor mais recente através dos atributos do cursor.

Cursor explícito

programadores podem criar uma área de contexto com nome para executar as suas operações de DML para obter mais controlo sobre ela. O cursor explícito deve ser definido na seção de declaração do bloco PL/SQL, e é criado para a declaração “selecionar” que precisa ser usado no código.

abaixo estão os passos que estão envolvidos no trabalho com cursores explícitos.,

  • declarar o cursor

    declarar o cursor significa simplesmente criar uma área de contexto com nome para a declaração “Seleccionar” que é definida na parte da declaração. O nome desta área de contexto é o mesmo que o nome do cursor.

  • abrir o Cursor

    abrir o cursor irá instruir o PL / SQL para atribuir a memória a este cursor. Ele fará com que o cursor esteja pronto para obter os registros.

  • a obter dados do Cursor

    neste processo, a instrução’ Seleccionar ‘ é executada e as linhas obtidas são guardadas na memória atribuída., Estes são agora chamados como conjuntos ativos. Obter dados do cursor é uma atividade de nível de registro que significa que podemos acessar os dados de uma forma de registro A registro.

    cada declaração de obtenção irá obter um conjunto activo e contém a informação desse registo em particular. Esta declaração é a mesma que a’ SELECT ‘ que obtém o registo e atribui à variável na cláusula ‘INTO’, mas não irá lançar quaisquer excepções.

  • fechar o Cursor

    Uma vez que todo o registo seja obtido agora, precisamos de fechar o cursor para que a memória atribuída a esta área de contexto seja lançada.,

sintaxe:

  • na sintaxe acima, a parte da declaração contém a declaração do cursor e a variável cursor na qual os dados obtidos serão atribuídos.
  • o cursor é criado para a instrução’ Seleccionar ‘ que é dada na declaração do cursor.
  • na parte de execução, o cursor declarado é aberto, obtido e fechado.

atributos do Cursor

tanto o cursor implícito como o cursor explícito têm certos atributos que podem ser acessados. Estes atributos dão mais informações sobre as operações do cursor., Abaixo estão os diferentes atributos do cursor e seu uso.

Cursor Attribute Description
%FOUND devolve o resultado booleano ‘TRUE’ se a operação de obtenção mais recente obteve um registo com sucesso, caso contrário irá voltar a ser falsa.
%NOTFOUND isto funciona de forma oposta à %encontrada, irá retornar ‘TRUE’ se a operação de busca mais recente não puder obter qualquer registro.,
% ISOPEN devolve um resultado booleano ‘ TR ‘ se o cursor já estiver aberto, caso contrário devolve ‘FALSE’
%ROWCOUNT devolve o valor numérico. Ele dá o número real de registros que foram afetados pela atividade DML.

exemplo 1: Neste exemplo, vamos ver como declarar, abrir, obter e fechar o cursor explícito.

iremos projectar todo o nome do empregado a partir da tabela emp usando um cursor., Também usaremos o atributo cursor para definir o loop para obter todo o registro a partir do cursor.

Saída

Employee Fetched:BBBEmployee Fetched:XXXEmployee Fetched:YYY Total rows fetched is 3

Explicação do Código:

  • linha de Código 2: Declarar o cursor guru99_det para a declaração de SELECIONAR emp_name DE emp’.
  • linha de código 3: declarando a variável lv_emp_name.
  • linha de código 5: Abrir o cursor guru99_ Dot.
  • linha de Código 6: Configurar a instrução básica do ciclo para obter todos os registos na tabela ‘emp’.,
  • linha de código 7: obtém os dados guru99_det e atribui o valor ao lv_emp_name.
  • linha de código 9: Usando o atributo cursor ‘%NOTFOUND’ para descobrir se todo o registo no cursor foi obtido. Se obtido, então ele irá retornar ‘TRUE’ e o controle irá sair do loop, caso contrário o Controle vai continuar a obter os dados do cursor e imprimir os dados.
  • linha de código 11: condição de saída para a instrução do loop.
  • linha de código 12: imprime o nome do empregado obtido.,
  • linha de Código 14: usando o atributo cursor ‘%ROWCOUNT’ para encontrar o número total de registos que foram afectados/obtidos no cursor.
  • linha de Código 15: Depois de sair do loop o cursor é fechado e a memória alocada é livre.

para a indicação do Cursor do ciclo

a indicação”para o ciclo” pode ser usada para trabalhar com cursores. Podemos dar o nome do cursor em vez do limite de intervalo na instrução FOR loop para que o loop funcione desde o primeiro registro do cursor até o último registro do cursor., A variável cursor, abertura do cursor, obtenção e fecho do cursor será feito implicitamente pelo laço FOR.

sintaxe:

  • na sintaxe acima, a parte da declaração contém a declaração do cursor.
  • o cursor é criado para a instrução’ Seleccionar ‘ que é dada na declaração do cursor.
  • na parte de execução, o cursor declarado é configurado no For loop e a variável de loop ‘I’ irá comportar-se como variável de cursor neste caso.,

exemplo 1: Neste exemplo, vamos projectar todo o nome do empregado a partir da tabela emp usando um cursor-para laço.

saída

Employee Fetched:BBB Employee Fetched:XXXEmployee Fetched:YYY

Código explicação:

  • linha de código 2: declaração do cursor guru99_det para a declaração ‘seleccionar o emp_ nome do emp’.
  • linha de código 4: construir o ciclo “para” para o cursor com a variável loop lv_emp_name.linha de código 5: Imprimir o nome do empregado em cada iteração do ciclo.,
  • linha de Código 8: sair do ciclo

nota: no Cursor-para o ciclo, os atributos do cursor não podem ser usados desde que a abertura, obtenção e fecho do cursor é feito implicitamente pelo ciclo.