Pytanie dotyczące tabel zagnieżdżonych w zapytaniach SELECT (ORACLE/POSTGRES)

0

Witam,
Na potrzeby pracy magisterskiej zastanawiam się, czy Oracle i PostgreSQL umożliwiają coś takiego jak wykonywanie zapytań SELECT, w których tworzą się samoistnie struktury podobne do tabel zagnieżdżonych. Przeszukałam sporo źródeł, ale nie znalazłam nic konkretnego.
Nie jestem pewna czy zapytania z wykorzystaniem WITH czy podzapytań to dokładnie taki efekt.
Czy ktoś jest rozeznany w temacie i mógłby mi pomóc?

Z góry dziękuję,
Natalia

0

jak zdefiniujesz KONKRETNIE co masz na myśli to tworzą się samoistnie struktury podobne do tabel zagnieżdżonych to na pewno ktoś Ci odpowie

0

Chodzi mi o to czy jest taka metoda/sposób użycia wyrażenia SELECT, który zwraca w jakiś (dynamiczny) sposób dane w postaci tabeli zagnieżdżonej. Jedną z metod do wyników zapytań hierarchicznych w relacyjnej bazie promotor podał mi tabele zagnieżdżone. Sęk w tym, że nie chodzi o utworzenie nested table tylko o wyciąganie danych z tabel w taki sposób, aby wynik zapytania miał charakter tabeli zagnieżdżonej. Zagłębiając się w temat znalazłam takie metody jak podzapytania wielokolumnowe, wyrażenia z użyciem klauzuli with, podzapytania zagnieżdżone... natomiast w dalszym ciągu nie jestem pewna czy takie metody dają oczekiwany efekt.

0

oracle ma coś takiego http://www.orafaq.com/wiki/NESTED_TABLE tylko, że to z samym zapytaniem SELECT ma niewiele wspólnego. To po prostu sposób na deklaracje kolumny jako typu tabelarycznego

0

dokładnie, natomiast tak jak pisałam, chodzi o to żeby nie tworzyć typu tabelarycznego który jest wykorzystywany w tabeli zagnieżdżonej, a uzyskanie wyniku zapytania select z tabel o normalnych strukturach tak, aby wynik ten przedstawiał dane o charakterze tabeli zagnieżdżonej. Metody, które znalazłam są w pewien sposób podobne, ale raczej zwracają dane powiedziałabym w relacji jeden-do-jeden niż jeden-do-wielu.

0

nic mi nie wiadomo, żeby można było zwrócić taki wynik bez wcześniejszej deklaracji typu zagnieżdżonego

0

Może chodzi o przypadek podobny do tego tematu:
https://community.oracle.com/thread/2286500?start=0&tstart=0

Tworzymy typ lokalny w pakiecie i funkcję pipelined

CREATE OR REPLACE PACKAGE pkg_test IS

	TYPE tt_Number IS TABLE OF NUMBER;

	FUNCTION f_pipe RETURN tt_Number PIPELINED;

END;
/

CREATE OR REPLACE PACKAGE BODY pkg_test IS

	FUNCTION f_pipe RETURN tt_Number
		PIPELINED IS
	BEGIN
		FOR i IN (SELECT LEVEL FROM dual CONNECT BY LEVEL < 100) LOOP
			PIPE ROW(i.level);
		END LOOP;
		RETURN;
	
	END;

END;
/

Oracle tworzy także automatycznie typ globalny o nazewnictwie SYS_PLSQL_....

Odpytujemy w select o wartości z tej funkcji i otrzymujemy tabelę zagnieżdżoną.

select pkg_test.f_pipe from dual;

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