Zamiana Funkcji na Procedurę (Oracle)

0

Witam po raz kolejny :)
Czy jest możliwość szybkiej zmiany działającej funkcji na działającą w podobny sposób procedurę?
Zamiast zwracania wartości byłyby one po prostu wypisywane w DBMS OUTPUT
Korzystam tutaj dodatkowo z kursora i Package

 --Funkcja zwracający propozycje filmów nie oglądanych przez danego klienta (X)
--SELECT * FROM TABLE(F_PREFERENCJE(x));

CREATE OR REPLACE FUNCTION F_PREFERENCJE(X INTEGER)  
RETURN OPAKOWANIE.TABLICA PIPELINED IS CURSOR kk IS  

SELECT F.ID_F, F.NAZWA
FROM FILM F, KLIENT K, PREFERENCJE PRE, GATUNEK G 
WHERE F.ID_F NOT IN     
(   
SELECT DISTINCT F.ID_F       
FROM KLIENT K, ZAMOWIENIE Z, POZYCJA P, EGZEMPLARZ_FILMU EF, FILM F, GATUNEK G, PREFERENCJE PRE       
WHERE K.ID_K = X AND Z.ID_K = K.ID_K AND P.ID_Z = Z.ID_Z AND P.ID_EF = EF.ID_EF AND EF.ID_F = F.ID_F AND F.ID_G = G.ID_G 
)
AND K.ID_P = PRE.ID_P AND PRE.ID_G = G.ID_G AND F.ID_G = G.ID_G AND K.ID_K = X 
ORDER BY F.ID_F ASC; 

w OPAKOWANIE.WIERSZ;
BEGIN 
OPEN kk; --otwarcie kursora

LOOP 
  FETCH kk into w;  --zapisywanie kolejnych wierszów do tablicy
  EXIT WHEN kk%notfound;
  PIPE ROW(w); --zwracanie pojedynczego wiersza
END LOOP; 

CLOSE kk; 
RETURN; 
END;


CREATE OR REPLACE PACKAGE OPAKOWANIE IS --paczka sluży do przechowywania wierszy z funkcji preferencji
TYPE WIERSZ IS RECORD
(
	ID_FILMU NUMBER,
	NAZWA VARCHAR2(100)
);
TYPE TABLICA IS TABLE OF WIERSZ;
END;
0

a jak chcesz odczytać to co procedura wypluje do DBMS OUTPUT?

0

Już poradziłem sobie z tym problemem.

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