Galera não sei pq mais aqui em casa não roda nada… no trabalho eu faço e roda mtu estranho
Alguem ajuda…
[code]DECLARE
CURSOR C1 IS SELECT FUNC_NOME , FUNC_SALARIO FROM FUNCIONARIO;
RC1 C1%ROWTYPE;
BEGIN
FOR RC1 IN C1 LOOP
FETCH C1 INTO RC1;
dbms_output.put_line(RC1.FUNC_NOME || ' ' || RC1.FUNC_SALARIO);
dbms_output.new_line();
END LOOP;
END; [/code]
Só quero mostrar na tela todos os funcionarios…
E não roda…
vc misturou as duas formas de usar cursor
uma é com FOR, que acredito que seja a que vc tentou fazer,
e outra é usando OPEN e FETCH
com OPEN E FETCH:
DECLARE
CURSOR C1 IS
SELECT FUNC_NOME,
FUNC_SALARIO
FROM FUNCIONARIO;
R1 C1%ROWTYPE;
BEGIN
OPEN C1;
LOOP
FETCH C1 INTO R1;
EXIT WHEN C1%NOTFOUND;
dbms_output.put_line(R1.FUNC_NOME || ' ' || R1.FUNC_SALARIO);
dbms_output.new_line();
END LOOP;
END;
usando FOR
DECLARE
CURSOR C1 IS
SELECT FUNC_NOME,
FUNC_SALARIO
FROM FUNCIONARIO;
BEGIN
FOR R1 IN C1 LOOP
dbms_output.put_line(R1.FUNC_NOME || ' ' || R1.FUNC_SALARIO);
dbms_output.new_line();
END LOOP;
END;
Diferenças entre os dois é que com OPEN e FETCH, vc tem um controle maior sobre o cursor.
Porém vc é mais raro vc usar esse controle maior, normalmente só se quer iterar sobre o cursor sem ter a necessidade de fazer outras operações com ele.
[]'s
Valeu mano! Muito obrigado! Estou fazendo um treinamento onde trabalho e precisava muito dessa ajuda!
Abraço!