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.
- Cursor de referência forte
- Cursor de referência fraco e
- 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.