PLSQL Procedura z użyciem kursora

0

Witam, mam problem, ponieważ mam zadanie, by napisać dowolną procedurę z użyciem kursora.
Po przeszukaniu internetu, udało mi się znaleźć przykłady różnych procedur. Oczywiście mam je przerobione pod moją bazę, ale procedury te nie dają żadnego wyniku.
Pierwszy raz piszę procedurę z kursorem w PLSQLu, co gorsze w wykładzie nie mam żadnego takiego przykładu.

SET Serveroutput ON
CREATE OR REPLACE PROCEDURE Procedura IS
CURSOR kursor IS SELECT * FROM emp;
v_emp kursor%ROWTYPE;
BEGIN
  OPEN kursor;
  LOOP
    FETCH kursor INTO v_emp;
    EXIT WHEN kursor%NOTFOUND;
    DBMS_OUTPUT.put_line(v_emp.NAZWISKO);
  END LOOP;
  CLOSE kursor;
END; 

Może mi ktoś powiedzieć co jest tutaj źle? Dlaczego ta procedura nic nie zwraca.

Mam też taki przykład, pierwsza procedura z tej strony http://sql-plsql.blogspot.com/2007/05/examples-of-oracle-plsql-cursors.html również nic u mnie nie zwraca.

Ktoś wie jak to naprawić?
Bardzo proszę o pomoc.
Lub pomoc w napisaniu jakiejkolwiek innej procedury z użyciem kursora.

0

Nie znam się za dobrze na ORA, ale czy v_emp nie powinno być typu emp%ROWTYPE?

0

Niestety to nic nie zmieniło, procedura dalej nic nie zwraca.
Tak jak poprzednio się skompilowała, ale wyniku brak.

0

Cześć,
Twój kod utworzył procedurę o nazwie Procedura.
Teraz musisz ją uruchomić np:

SET Serveroutput ON
--DECLARE   -- chyba zbędne w tym przypadku
BEGIN
    Procedura;
END;

Ewentualnie aby sprawdzić sam kod procedurki:

SET Serveroutput ON
--CREATE OR REPLACE PROCEDURE Procedura IS
DECLARE
CURSOR kursor IS SELECT * FROM emp;
v_emp emp%ROWTYPE;
BEGIN
DBMS_OUTPUT.put_line('Start wczytywania');
  OPEN kursor;
  LOOP
    FETCH kursor INTO v_emp;
    EXIT WHEN kursor%NOTFOUND;
    DBMS_OUTPUT.put_line(v_emp.NAZWISKO);
  END LOOP;
  CLOSE kursor;
DBMS_OUTPUT.put_line('Koniec wczytywania');
END; 

1 użytkowników online, w tym zalogowanych: 0, gości: 1