PLSQL Procedura z użyciem kursora

PLSQL Procedura z użyciem kursora
  • Rejestracja: dni
  • Ostatnio: dni
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.

Kopiuj
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.

Marcin.Miga
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2794
0

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

  • Rejestracja: dni
  • Ostatnio: dni
0

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

  • Rejestracja: dni
  • Ostatnio: dni
0

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

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

Ewentualnie aby sprawdzić sam kod procedurki:

Kopiuj
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; 

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.