Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como criar PL/SQL SYS_REFCURSOR no banco de dados Oracle

PL/SQL SYS_REFCURSOR no banco de dados Oracle


Como aprendemos na introdução ao cursor ref que existem três tipos de cursor ref PL/SQL no Oracle Database.
  1. Cursor de referência forte
  2. Cursor de referência fraco e
  3. SYS_REFCURSOR

Até agora, nesta série, cobrimos os conceitos de cursor de referência forte e fraco. O único tipo de cursor que ainda não foi tocado é o PL/SQL SYS_REFCURSOR no Oracle Database. Que vamos aprender neste blog.

O que é PL/SQL SYS_REFCURSOR?


SYS_REFCURSOR é um cursor de referência fraco predefinido que vem embutido com o software de banco de dados Oracle.

Como um cursor de referência predefinido nos ajudará?


SYS_REFCURSOR é um cursor de referência fraco predefinido, o que significa que não precisamos defini-lo em nosso código como fizemos com o cursor de referência fraco explícito no tutorial anterior. Como aprendemos nesse tutorial, criar um cursor de referência fraco é um processo de duas etapas. Primeiro você tem que criar o “tipo de cursor ref fraco” e então você tem que criar “uma variável de cursor” usando esse cursor ref.

Ao usar SYS_REFCURSOR, você só precisa criar uma variável de cursor e nada mais. SYS_REFCURSOR minimiza completamente a primeira etapa em que você cria o tipo de cursor ref fraco.

Então Sys_Refcursor é um cursor de referência integrado, onde podemos encontrar sua definição?


Você pode descobrir a definição de PL/SQL SYS_REFCURSOR em um script chamado “stdspec.sql”. Você pode localizar esse script no diretório cujo caminho é o seguinte. 
%ORACLE_HOME% \RDBMS\ADMIN\stdspec.sql

A definição de SYS_REFCURSOR será algo assim:


Que tipo de cursor de referência é um SYS_REFCURSOR?


Como mencionado acima na definição, um SYS_REFCURSOR é um cursor de referência fraco.

Agora que você tirou quase todas as dúvidas sobre SYS_REFCURSOR. Eu só quero te fazer uma última pergunta.

Info:Não há espaço entre REF e CURSOR. É uma única palavra "RefCursor".
Erro:SYS_REF CURSOR
Correto:SYS_REFCURSOR

Por que alguém declararia um cursor de referência fraco quando já temos um predefinido?


Essa é realmente uma pergunta muito boa. A resposta a esta pergunta é Não, não precisamos criar explicitamente um cursor de referência fraco. A Oracle minimizou a necessidade de criar um cursor ref fraco enviando SYS_REFCURSOR como parte do pacote padrão desde o Oracle Database 9i, embora a opção de criar um ainda esteja disponível.

É como uma escolha pessoal, se alguém quiser criar um cursor de referência fraco, então eles podem. Caso contrário, eles têm SYS_REFCURSOR sempre à sua disposição. Meu querido amigo Steven Feuerstein fez um post muito bom no blog respondendo a essa pergunta que você pode ler aqui.

Vamos ver um exemplo bem fácil demonstrando como usar um PL/SQL SYS_REFCURSOR no Oracle Database.

Exemplo:Como criar PL/SQL SYS_REFCURSOR no Banco de Dados Oracle?

SET SERVEROUTPUT ON;
DECLARE
    --Declare cursor variable of SYS_REFCURSOR type
    cur_var SYS_REFCURSOR;
    
    --Declare variables for holding data
    f_name  employees.first_name%TYPE;
    emp_sal employees.salary%TYPE;
BEGIN
OPEN cur_var FOR SELECT first_name, Salary FROM employees WHERE employee_id = 100;
    FETCH cur_var INTO f_name, emp_sal;
    CLOSE cur_var;
    DBMS_OUTPUT.PUT_LINE(f_name ||' '||emp_sal);
END;
/

Você pode assistir ao tutorial em vídeo no canal do YouTube para obter uma explicação detalhada do código acima.



Espero que tenha gostado da leitura e aprendido algo novo. Por favor, compartilhe este blog em suas redes sociais com seus amigos. Obrigado e tenha um ótimo dia.