How to declare a cursor variable in PL-SQL?

Asked

Viewed 1,756 times

2

I have a course:

Cursor Pessoa is 
      Select nomeFuncionario
        From empresa;

   -- Variaveis para uso da rotina
   variavel

How would the variable ?

3 answers

1


So that you can use the variable in any chunk of code, even outside of a loop, or even as a filter for 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;

1

I use this syntax , follows example.

BEGIN
  FOR RCLIENTES IN (SELECT * FROM CLIENTES)
  LOOP
    DBMS_OUTPUT.PUTLINE(RCLEINTES.NOME);
  END LOOP;
END;

0

Great answers. I managed 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;

Browser other questions tagged

You are not signed in. Login or sign up in order to post.