jak w temacie jak zmusić Oracle żeby wypisywał wyniki operacji w czasie trwania procedury/funkcji a nie po jej zakończeniu, przy pomocy DBMS_OUTPUT.PUT_LINE(...)?ustawiam oczywiście SET SERVEROUTPUT ON ale niestety oracle nie chce się zabrać do pisania do okna konsoli, dopiero kiedy wywołam jakąś procedure wbudowaną, to drukując umieszczone w niej koumunikaty wypisze też komunikaty wcześniej umieszczone w buforze
napisałem funkcje MEMBER FUNCTION WYPISZ_GATUNKI dla typu FILM_TYP, który zawiera zagnieżdżoną kolekcje GATUNEK GATUNEK_VTYP(kolekcja referencji), której wartości wypisuje funkcja wypisz_gatunki
Kod
CREATE OR REPLACE TYPE GATUNEK_VTYP AS VARRAY(5) OF REF GATUNEK_TYP;
CREATE OR REPLACE TYPE FILM_TYP AS OBJECT(NUMER_BAZOWY NUMBER(4),
FILM_PODST FILM_PODST_TYP,
SCENOGRAFIA VARCHAR2(50),
NOSNIK REF NOSNIK_TYP,
FORMAT_DZWIEKU REF FORMAT_DZWIEKU_TYP,
GATUNEK GATUNEK_VTYP,
MEMBER FUNCTION WYPISZ_GATUNKI RETURN NUMBER
);
CREATE OR REPLACE TYPE BODY FILM_TYP AS
MEMBER FUNCTION WYPISZ_GATUNKI RETURN NUMBER IS
I INTEGER;
ILE INTEGER;
WIERSZ REF GATUNEK_TYP;
REFERENCJA GATUNEK_TYP;
BEGIN
ILE:=SELF.GATUNEK.COUNT;
FOR I IN 1..SELF.GATUNEK.COUNT LOOP
WIERSZ:=SELF.GATUNEK(I);
SELECT DEREF(WIERSZ) INTO REFERENCJA FROM DUAL;
DBMS_OUTPUT.PUT_LINE(REFERENCJA.NAZWA_GATUNKU);
END LOOP;
RETURN ILE;
END;
END;
/
CREATE TABLE FILMY_OBJ_TAB OF FILM_TYP;
CREATE OR REPLACE TYPE FILM_TYP AS OBJECT(NUMER_BAZOWY NUMBER(4),
FILM_PODST FILM_PODST_TYP,
SCENOGRAFIA VARCHAR2(50),
NOSNIK REF NOSNIK_TYP,
FORMAT_DZWIEKU REF FORMAT_DZWIEKU_TYP,
GATUNEK GATUNEK_VTYP,
MEMBER FUNCTION WYPISZ_GATUNKI RETURN NUMBER
);
CREATE OR REPLACE TYPE BODY FILM_TYP AS
MEMBER FUNCTION WYPISZ_GATUNKI RETURN NUMBER IS
I INTEGER;
ILE INTEGER;
WIERSZ REF GATUNEK_TYP;
REFERENCJA GATUNEK_TYP;
BEGIN
ILE:=SELF.GATUNEK.COUNT;
FOR I IN 1..SELF.GATUNEK.COUNT LOOP
WIERSZ:=SELF.GATUNEK(I);
SELECT DEREF(WIERSZ) INTO REFERENCJA FROM DUAL;
DBMS_OUTPUT.PUT_LINE(REFERENCJA.NAZWA_GATUNKU);
END LOOP;
RETURN ILE;
END;
END;
/
CREATE TABLE FILMY_OBJ_TAB OF FILM_TYP;
wypisuje to co trzeba ale nie wtedy co trzeba, wie ktoś może gdzie jest problem?