ďťż
 
[Oracle PL/SQL] Cursor i zapis =?ISO-8859-2?Q?rekord=F3w_do_?==?ISO-8859-2?Q?kolejnych_plik=F3w?= ďťż
 
[Oracle PL/SQL] Cursor i zapis =?ISO-8859-2?Q?rekord=F3w_do_?==?ISO-8859-2?Q?kolejnych_plik=F3w?=
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[Oracle PL/SQL] Cursor i zapis =?ISO-8859-2?Q?rekord=F3w_do_?==?ISO-8859-2?Q?kolejnych_plik=F3w?=



AP - 11-05-2007 12:32
[Oracle PL/SQL] Cursor i zapis =?ISO-8859-2?Q?rekord=F3w_do_?==?ISO-8859-2?Q?kolejnych_plik=F3w?=
  Witam

Jako że brakuje mi już wiedzy i koncepcji, jak to zrobić, proszę Was o
pomoc...

Sytuacja jest taka: mam zapytanie, które zwraca jedną kolumnę.
Zdefiniowałem kursor. Następnie próbuję odczytać zawartość tego kursora
i zapisać PARTIE zwróconych danych (np. po 10tys. wierszy) do kolejnych
plików tekstowych:

declare
licz_rek number :=0;
pr_file_log utl_file.file_type;
rek_start number :=1;
rek_end number :=1;
nr_pliku number :=10;
i number :=1;
CURSOR cu_dane IS
select [...] as cu_wiersz from [..];
begin
rek_start := 1;
rek_start := 10;
i := 1;
for nr_rek in cu_dane
loop
pr_file_log:=utl_file.fopen('c:\temp','dane'||nr_p liku||'.txt','W');
while ((i>=rek_start) and (i<=rek_end)) loop
i := i+1;
utl_file.put_line(pr_file_log,nr_rek.cu_wiersz);
end loop;
rek_start := rek_end + 1;
rek_end := rek_end + 10;
nr_pliku := nr_pliku + 1;
utl_file.fclose(pr_file_log);
end loop;
end;
/

W takiej postaci w ogóle nie "wchodzi" w pętlę while, dopiero gdy na
sztywno zdefiniuję warunek while ((i>=1) and (i<=10)), to zaczyna się
coś dziać, tzn. pojawiają się dane, ale pętla while wykonuje się
określoną ilość razy dla każdego rekordu z kursora.
Nie wiem, jak to inaczej poukładać, żeby działało dobrze.

Krótko mówiąc, celem jest zapis określonej liczności paczkami pewnej
ilości zwróconych danych do kolejno numerowanych plików.

Na zaś - dzięki :)

Pozdrawiam,
AP

PS. Gdyby to miało znaczenie, to pracuję na wersji 8.1.7.





=?ISO-8859-2?Q?S=B3awomir_Szysz=B3o?= - 11-05-2007 12:32
=?ISO-8859-2?Q?Re:_[Oracle_PL/SQL]_Cursor_i_zapis_rekord=F3w_do_kolejnych?==?ISO-8859-2?Q?_plik=F3w?=
  Dnia Tue, 24 Apr 2007 22:29:21 +0200, AP <ap@op.pl> wklepał(-a):

>Witam
>
>Jako że brakuje mi już wiedzy i koncepcji, jak to zrobić, proszę Was o
>pomoc...
>
>Sytuacja jest taka: mam zapytanie, które zwraca jedną kolumnę.
>Zdefiniowałem kursor. Następnie próbuję odczytać zawartość tego kursora
>i zapisać PARTIE zwróconych danych (np. po 10tys. wierszy) do kolejnych
>plików tekstowych:

Po pierwsze - nie przetwarzaj rekord po rekordzie bo to niewydajne.
Tutaj news:f0llh0.2lk.1@slaszysz.poczta.onet.pl masz przykład jak przyspieszyć
wczytywanie danych. Wczytaj te dane do tablicy raz i stamtąd dopiero zapisuj do
pliku.

Rozwiązanie trywialne - ustaw LIMIT na żądaną wartość i po każdym wczytaniu
danych przez FETCH zapisuj dane do pliku.
Rozwiązanie elastyczne - LIMIT niech będzie stały, ale dodaj warunki, które będą
zmieniać plik po przekroczeniu określonej liczby rekordów.
--
Sławomir Szyszło mailto:slaszysz@poczta.onet.pl
Primus inter FAQires & Grand Inquisitor no.0 of pl.comp.bazy-danych
FAQ pl.comp.bazy-danych http://www.dbf.pl/faq/
Archiwum http://groups.google.com/groups?grou...mp.bazy-danych




Lucyna Witkowska - 11-05-2007 12:32

  AP <ap@op.pl> napisał:
> rek_start := 1;
> rek_start := 10;

Jak moze wchodzic w petle, jesli rek_start=rek_end=10?

Pozdrowienia,
LW




AP - 11-05-2007 12:32

  Lucyna Witkowska pisze:
> AP <ap@op.pl> napisał:
>> rek_start := 1;
>> rek_start := 10;
>
> Jak moze wchodzic w petle, jesli rek_start=rek_end=10?
>
> Pozdrowienia,
> LW

No tak, wstyd jak nie wiem... Chyba za długo i zbyt późno nad tym
siedziałem.

Dziękuję.
AP
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Oracle 19g +Insert +Insert +Insert... MSSQL Express czy Oracle Express Jak =?windows-1250?Q?pobra=E6_szacowan=B9_wielko=9C=E6_zbiory_wy nikowego_w_MS?==?windows-1250?Q?_SQL_2005=3F?= [Oracle, Toad] Zaladowanie obiektu w TOAD [Oracle][Reports30] 10G nie dziala razem z Reports3.0 klient oracle (zmiana domyslna klienta oracla) [oracle] [xml] XML na bazie istniejacej struktury ? [Oracle] W jaki sposób skopiować całą zawartość schemy jednego użytkownika do nowo utworzonego użytkownika? klient Oracle 10g SE a Windows 98 SE Oracle Standard Edition One - czym sie rozni od wersji standard iexpress?
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • red-hacjenda.opx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com