Generowanie n rekordów w Oracle

Wpis napisany 26 października 2011 w kategoriach: Wszystkie | 13:39:29 | 9 komentarzy

Przydatna sztuczka - generuje n rekordów z liczbami od 1 do n. Potrzebowałem tego w pracy w celu wyświetlenia nagłówków w Jasper Reports gdy nie istnieją rekordy w grupie, a jednak mimo to chcemy mieć nagłówek. SELECT rownum FROM DUAL CONNECT BY ROWNUM < 1000

Wasacz 26 października 2011 o 13:49:34

Dlaczego użyłeś CONNECT BY akurat?

Wasacz 26 października 2011 o 13:49:51

OK, fail.

Albi 26 października 2011 o 17:30:53

A co innego byś proponował? :) To tylko taki fajny hack który chciałem sobie zapisać i podzielić się ciekawym pomysłem z innymi.

Wasacz 26 października 2011 o 17:32:23

Pomyliłem przyciski „Wyślij” i „Pomyśl”, co widać w drugim komentarzu ;)

pecet 26 października 2011 o 20:35:26

wasacz -- żyjesz? szok

Wasacz 26 października 2011 o 20:40:07

Żyję, czytam Joggera ;) Tylko się nie udzielam z braku czasu.

navnav 26 października 2011 o 22:29:44

SELECT COLUMNVALUE FROM TABLE(MYFUNC(1000));

TYPE NUMBERS IS TABLE OF NUMBER;

DECLARE MY_FUNC(n NUMBER) RETURN NUMBERS AS
BEGIN
FOR i IN 1..n LOOP
PIPE ROW(i);
END LOOP;
END;

Do sprawdzenia, co szybsze / mniej zasobożerne, connect by przy dużych liczbach wydaje się generować spore drzewo.

navnav 26 października 2011 o 22:30:42

Pisałem z głowy, gdzieś tam jeszcze pipelined powinno być chyba... dawno nie dłubałem w oracle'u.

Albi 27 października 2011 o 19:38:12

navnav: Akurat w moim zastosowaniu chodziło tylko o 6 rekordów, poza tym nie mogłem użyć PL/SQL, tylko zapytania. W innym wypadku zrobiłbym to dokładnie w ten sposón :)

Dodaj komentarz

HTML w komentarzach jest wyłączony.

code