Creative Saplings

PL / SQL – Cursores (Português)

Janeiro 30, 2021
No Comments
Anúncios

Neste capítulo, discutiremos os cursores em PL / SQL. O Oracle cria uma área de memória, conhecida como área de contexto, para processar uma instrução SQL, que contém todas as informações necessárias para processar a instrução; por exemplo, o número de linhas processadas, etc.

Um cursor é um ponteiro para esta área de contexto. PL / SQL controla a área de contexto por meio de um cursor. Um cursor contém as linhas (uma ou mais) retornadas por uma instrução SQL. O conjunto de linhas que o cursor contém é referido como o conjunto ativo.

Você pode nomear um cursor para que ele possa ser referido em um programa para buscar e processar as linhas retornadas pela instrução SQL, um de uma vez. Existem dois tipos de cursores –

  • cursores implícitos
  • cursores explícitos

Cursores implícitos

Cursores implícitos são criados automaticamente pelo Oracle sempre que uma instrução SQL é executada, quando não há cursor explícito para a instrução. Os programadores não podem controlar os cursores implícitos e as informações neles contidas.

Sempre que uma instrução DML (INSERT, UPDATE e DELETE) é emitida, um cursor implícito é associado a essa instrução. Para operações INSERT, o cursor contém os dados que precisam ser inseridos. Para operações UPDATE e DELETE, o cursor identifica as linhas que seriam afetadas.

No PL / SQL, você pode se referir ao cursor implícito mais recente como o cursor SQL, que sempre tem atributos como% FOUND ,% ISOPEN,% NOTFOUND e% ROWCOUNT. O cursor SQL possui atributos adicionais,% BULK_ROWCOUNT e% BULK_EXCEPTIONS, projetados para uso com a instrução FORALL. A tabela a seguir fornece a descrição dos atributos mais usados –

S.No Atributo & Descrição
1

% FOUND

Retorna TRUE se uma instrução INSERT, UPDATE ou DELETE afetou uma ou mais linhas ou uma instrução SELECT INTO retornou uma ou mais linhas. Caso contrário, retorna FALSO.

2

% NOTFOUND

O oposto lógico de% FOUND. Ele retorna TRUE se uma instrução INSERT, UPDATE ou DELETE não afetou nenhuma linha ou uma instrução SELECT INTO não retornou nenhuma linha. Caso contrário, retorna FALSO.

3

% ISOPEN

Sempre retorna FALSE para cursores implícitos, porque o Oracle fecha o cursor SQL automaticamente após executar sua instrução SQL associada.

4

% ROWCOUNT

Retorna o número de linhas afetadas por uma instrução INSERT, UPDATE ou DELETE, ou retornado por uma instrução SELECT INTO.

Qualquer atributo do cursor SQL será acessado como sql% attribute_name conforme mostrado abaixo no exemplo.

Exemplo

Usaremos a tabela CLIENTES que criamos e usamos nos capítulos anteriores.

O programa a seguir atualizará a tabela e aumentará o salário de cada cliente em 500 e usará o SQL% Atributo ROWCOUNT para determinar o número de linhas afetadas –

Quando o código acima é executado no prompt SQL, ele produz o seguinte resultado –

6 customers selected PL/SQL procedure successfully completed. 

Se você verificar os registros na tabela de clientes, verá que as linhas foram atualizadas –

Cursores explícitos

Cursores explícitos são cursores definidos pelo programador para obter mais controle sobre a área de contexto. Um cursor explícito deve ser definido na seção de declaração do Bloco PL / SQL. Ele é criado em uma instrução SELECT que retorna mais de uma linha.

A sintaxe para criar um cursor explícito é –

CURSOR cursor_name IS select_statement; 

Funcionando com um cursor explícito inclui as seguintes etapas –

  • Declarar o cursor para inicializar a memória
  • Abrir o cursor para alocar a memória
  • Buscar o cursor para recuperar os dados
  • Fechar o cursor para liberar a memória alocada

Declarando o Cursor

Declarar o cursor define o cursor com um nome e a instrução SELECT associada. Por exemplo –

CURSOR c_customers IS SELECT id, name, address FROM customers; 

Abrindo o Cursor

Abrir o cursor aloca a memória para o cursor e o torna pronto para buscar as linhas retornadas pela instrução SQL nele. Por exemplo, vamos abrir o cursor definido acima da seguinte maneira –

OPEN c_customers; 

Buscando o cursor

Buscar o cursor envolve acessar uma linha em um tempo. Por exemplo, buscaremos linhas do cursor aberto acima da seguinte maneira –

FETCH c_customers INTO c_id, c_name, c_addr; 

Fechando o cursor

Fechar o cursor significa liberar a memória alocada.Por exemplo, fecharemos o cursor aberto acima da seguinte maneira –

CLOSE c_customers;

Exemplo

A seguir está um exemplo completo para ilustrar os conceitos de cursores explícitos & minua;

Quando o código acima é executado no prompt SQL, ele produz o seguinte resultado –

1 Ramesh Ahmedabad 2 Khilan Delhi 3 kaushik Kota 4 Chaitali Mumbai 5 Hardik Bhopal 6 Komal MP PL/SQL procedure successfully completed. 
Anúncios

Articles
Previous Post

Sustanon 250 Cycle (Português)

Next Post

Quantos dados o Netflix usa - como controlá-los e usar menos

Deixe uma resposta Cancelar resposta

Artigos recentes

  • As melhores escolas de fotografia do mundo, 2020
  • Cidadãos soberanos levam sua filosofia antigovernamental para as estradas
  • Guia de custos de reparo de estuque
  • Muckrakers (Português)
  • Oncologia de precisão

Arquivo

  • Fevereiro 2021
  • Janeiro 2021
  • Dezembro 2020
  • Novembro 2020
  • Outubro 2020
  • Setembro 2020
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어
Proudly powered by WordPress | Theme: Fmi by Forrss.