Database
 sql >> Base de Dados >  >> RDS >> Database

Cursores de referência fortes com tipo de dados de registro baseado em tabela

Cursores de referência fortes com tipo de dados de registro baseado em tabela


Como aprendemos na introdução aos Cursores de Referência que existem dois tipos de Cursores de Referência PL/SQL no Banco de Dados Oracle.
  1. Cursores de referência fortes e
  2. Cursores de referência fracos

Vamos explorar todos os conceitos de ambos os tipos de cursores de referência nesta série. Com este blog vamos começar com o primeiro que é o Strong Ref Cursors com tipo de dados de registro baseado em tabela e com tipo de dados de registro definido pelo usuário.

O que são cursores de referência forte PL/SQL no banco de dados Oracle?


Um cursor de referência com tipo de retorno fixo é chamado de Cursor de referência forte no banco de dados Oracle. Devido ao tipo de retorno fixo, cursores ref fortes só podem ser usados ​​seletivamente. Por exemplo, com as instruções SELECT que retornam o resultado cujo tipo de dados corresponde ao que você corrigiu durante a declaração do cursor.

Podemos usar Strong Ref Cursor com qualquer instrução SELECT no Oracle Database?


Não, não podemos usar cursores de referência fortes com qualquer instrução SELECT. Isso é por causa do 'Tipo de retorno' fixo.

No entanto, ele só pode ser usado com as instruções SELECT que retornam o resultado cujo tipo de dados corresponde à 'cláusula de retorno' do cursor.

Podemos usar quaisquer tipos de dados PL/SQL para declarar nosso Cursor de Referência Forte?


Não nós não podemos. Além disso, o tipo de retorno de um cursor ref forte deve sempre ser um tipo de dados de registro. Pode ser um tipo de dados de registro baseado em tabela ou um tipo de dados de registro definido pelo usuário.

Exemplo de cursores de referência fortes com tipo de dados de registro baseado em tabela


Vamos escrever um exemplo. Aqui vamos criar um Cursor de Referência Forte com Tipo de Dados de Registro Baseado em Tabela.
 SET SERVEROUTPUT ON
 DECLARE
    	/*Create Ref Pointer Type*/
	TYPE	my_RefCur	IS REF CURSOR RETURN 	employees%ROWTYPE;
	/*Create Cursor Variable*/
	cur_var my_RefCur;
	rec_var     employees%ROWTYPE;
 BEGIN
	OPEN cur_var FOR SELECT * FROM employees WHERE employee_id = 100;
	FETCH cur_var INTO rec_var;
	CLOSE cur_var;
	DBMS_OUTPUT.PUT_LINE ('Employee '||rec_var.first_name||' has salary '||rec_var.salary||'.');
END;
/

A criação de um cursor de referência é um processo de duas etapas.

Crie um tipo de ponteiro de referência.


Primeiro, precisamos criar um tipo de ponteiro de referência. Assim, usando a instrução TYPE criamos um ponteiro Ref Cursor Type exatamente como no código acima. Nesta instrução, você primeiro escreve a palavra-chave TYPE seguida pelo nome do seu cursor ref. Depois disso você tem que escrever uma frase reservada IS REF CURSOR. Ele dirá ao compilador que estamos criando um tipo que é REF CURSOR. Em seguida, você deve especificar a cláusula RETURN.

Por exemplo
TYPE	my_RefCur	IS REF CURSOR RETURN 	employees%ROWTYPE;

Criar uma variável de cursor


Na segunda etapa, criamos uma variável de cursor. Para criar uma variável de cursor, você deve primeiro escrever o nome de sua variável seguido pelo nome de seu cursor de referência. A partir daí esta variável será usada para se referir ao Cursor Ref sobre o qual ela é criada.

Por exemplo

cur_var my_RefCur;

Além da variável do cursor no código acima, também temos uma variável extra. Este é novamente do tipo de dados de registro baseado em tabela e projetado usando a tabela 'Employees'. Além disso, esta variável conterá os dados obtidos do cursor.
rec_var     employees%ROWTYPE;

Seção de Execução


Na seção de execução do nosso código, temos quatro instruções executáveis. Deixe-me explicar isso para você.
  1. ABERTO PARA declaração


A primeira instrução é a instrução OPEN FOR. Ele associa a instrução SELECT com a variável do Cursor e abre o cursor para a instrução. Além disso, também procura todos os recursos necessários para processar a instrução SELECT.
  1. Instrução FETCH


Como discutimos no tutorial PL/SQL 26. O processo de recuperação de dados do cursor é chamado de busca. Portanto, aqui estamos buscando os dados do Cursor Ref para a variável de registro ‘Rec_Var’.
  1. Declaração de fechamento


Assim que terminarmos com nosso cursor, é aconselhável fechá-lo para que nosso Oracle Engine / Server possa liberar todos os recursos associados a ele. Isso é exatamente o que fizemos na terceira declaração. Usando a palavra-chave CLOSE seguida pela variável cursor, fechamos nosso cursor ref.
  1. Declaração de saída


A quarta instrução é uma instrução DBMS_OUTPUT. Ele exibirá de volta o primeiro nome e o salário do funcionário com ID de funcionário 100.

Você pode assistir ao tutorial PL/SQL 33 para aprender o funcionamento de uma variável de registro baseada em tabela.

Portanto, em conclusão…


No código acima, criamos um Cursor Strong Ref PL/SQL com o nome 'my_RefCur' que retornará um tipo de dados de registro baseado em tabela de resultados. Além disso, este tipo de dados de registro baseado em tabela é suportado na tabela Funcionários do esquema HR. Assim, antes de executar este programa, precisamos ter certeza de que estamos conectados ao esquema HR do nosso banco de dados.

Além disso, se você aprender melhor assistindo ao vídeo, aqui está um para você. Vá em frente e confira.



Esse é o tutorial sobre como criar cursores de referência fortes PL/SQL usando o tipo de dados de registro baseado em tabela no banco de dados Oracle. Espero que você tenha aprendido algo novo. Além disso, certifique-se de compartilhar este blog em suas redes sociais com seus amigos.

Obrigado pela visita. Fique atento, pois no próximo tutorial aprenderemos como criar um cursor ref forte com a variável de registro definida pelo usuário.

Tenha um ótimo dia!