How to declare a cursor type variable in PL-SQL?

2

I have a course:

Cursor Pessoa is 
      Select nomeFuncionario
        From empresa;

   -- Variaveis para uso da rotina
   variavel

How would the variable be?

    
asked by anonymous 31.01.2018 / 21:08

3 answers

1

In order to use the variable in any part of the code, even outside a loop, or even as a filter of another cursor, you can declare a variable using %rowtype , as an example:

declare
  --
  cursor c_pessoa is 
    Select nomeFuncionario
      From empresa;
  --
  -- Variaveis para uso da rotina
  var_pessoa c_pessoa%rowtype;
  --
  -- Cursor que utiliza o valor atual de var_pessoa como filtro
  cursor c_outro_cursor is
    select alguma_coluna
      from outra_tabela
     where nomeFuncionario = var_pessoa.nomeFuncionario;
  --
  var_alguma_coluna outra_tabela.alguma_coluna%type;
  --
begin
  --
  open c_pessoa;
  loop
    --
    fetch c_pessoa into var_pessoa;
    exit when c_pessoa%notfound;
    --
    dbms_output.put_line('O nome da pessoa é: '|| var_pessoa.nomeFuncionario);
    --
    open c_outro_cursor;
    fetch c_outro_cursor into var_alguma_coluna;
    close c_outro_cursor;
    --
  end loop;
  close c_pessoa;
  --
end;
    
01.02.2018 / 17:10
0

I use this syntax, following example.

BEGIN
  FOR RCLIENTES IN (SELECT * FROM CLIENTES)
  LOOP
    DBMS_OUTPUT.PUTLINE(RCLEINTES.NOME);
  END LOOP;
END;
    
01.02.2018 / 00:17
0

Great answers. I was able to run the functionality with this code:

DECLARE

--Declaracao do curso
 Cursor c_fun is 
      Select nome
        From TFUNCIONARIO;

--Declaraão da variavel
nfun c_fun%rowtype;

BEGIN


  -- Abrir o sistema
   OPEN c_fun;
    FETCH c_fun INTO nfun;
   CLOSE c_fun;

   -- exibir dados do funcionario
    dbms_output.put_line(nfun.nome);

END;
    
01.02.2018 / 17:55