ďťż
 
[ORACLE w pl/sql] limit, multi-insert ďťż
 
[ORACLE w pl/sql] limit, multi-insert
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 w pl/sql] limit, multi-insert



smerf - 11-05-2007 12:32
[ORACLE w pl/sql] limit, multi-insert
  Potrzebuje ograniczyć zapytanie do wyświetlenia pierwszego rekordu - na
bazie Oraclowej
W mySQLu dopuszczalna jest ponizsza postac tego zapytania, niestety w
PL/SQLu nie dziala LIMIT
select id, data from tabela order by data desc limit 1

Drugi problem lezy przy wstawianiu w petli kilku rekordow. Zamiast
wrzucania każdego wiersza osobno, jak ponizej:
insert into tabela(imie, nazwisko, numer) values('Mmm', 'PPPP', 24)
insert into tabela(imie, nazwisko, numer) values('AAAA, 'WWW, 23)
potrzebuje zastapic to jednym zapytaniem dzialajacym w PL/SQLu
W mySQLu możliwe jest takie rozwiązanie przy uzyciu przecinka miedzy
wstawianymi rekordami:
insert into tabela(imie, nazwisko, numer) values('Mmm', 'PPPP', 24),
('AAAA, 'WWW, 23)





=?ISO-8859-2?Q?S=B3awomir_Szysz=B3o?= - 11-05-2007 12:32

  Dnia Mon, 23 Apr 2007 19:13:39 +0200, smerf <smerf@akcesoria.home.pl>
wklepał(-a):

>Potrzebuje ograniczyć zapytanie do wyświetlenia pierwszego rekordu - na
>bazie Oraclowej
>W mySQLu dopuszczalna jest ponizsza postac tego zapytania, niestety w
>PL/SQLu nie dziala LIMIT
>select id, data from tabela order by data desc limit 1

Jeśli zapytanie nie zwraca wielu rekordów to zrób kursor z sortowaniem i:
OPEN cur_a;
FETCH cur_a INTO rec_a;
CLOSE cur_a;

i masz pierwszy wiersz.

>Drugi problem lezy przy wstawianiu w petli kilku rekordow. Zamiast
>wrzucania każdego wiersza osobno, jak ponizej:
>insert into tabela(imie, nazwisko, numer) values('Mmm', 'PPPP', 24)
>insert into tabela(imie, nazwisko, numer) values('AAAA, 'WWW, 23)
>potrzebuje zastapic to jednym zapytaniem dzialajacym w PL/SQLu

A skąd wstawiasz te dane?

Jeśli są w tabeli PL/SQL to FORALL:
http://www.oracle-base.com/articles/...ocessing9i.php
--
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




=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 11-05-2007 12:32

  smerf wrote:
> Potrzebuje ograniczyć zapytanie do wyświetlenia pierwszego rekordu - na
> bazie Oraclowej
> W mySQLu dopuszczalna jest ponizsza postac tego zapytania, niestety w
> PL/SQLu nie dziala LIMIT
> select id, data from tabela order by data desc limit 1

O ile dobrze pamiętam to where rownum <= 1

--
P.M.




dips - 11-05-2007 12:32

  smerf napisał(a):
> Potrzebuje ograniczyć zapytanie do wyświetlenia pierwszego rekordu - na
> bazie Oraclowej
> W mySQLu dopuszczalna jest ponizsza postac tego zapytania, niestety w
> PL/SQLu nie dziala LIMIT
> select id, data from tabela order by data desc limit 1
>
> Drugi problem lezy przy wstawianiu w petli kilku rekordow. Zamiast
> wrzucania każdego wiersza osobno, jak ponizej:
> insert into tabela(imie, nazwisko, numer) values('Mmm', 'PPPP', 24)
> insert into tabela(imie, nazwisko, numer) values('AAAA, 'WWW, 23)
> potrzebuje zastapic to jednym zapytaniem dzialajacym w PL/SQLu
> W mySQLu możliwe jest takie rozwiązanie przy uzyciu przecinka miedzy
> wstawianymi rekordami:
> insert into tabela(imie, nazwisko, numer) values('Mmm', 'PPPP', 24),
> ('AAAA, 'WWW, 23)

mialem te same pytania kiedys:)

odnosnie limit tojak kolega napisal użyj rownum (unikalny id dla każdej
wyselectowanej grupy rekordów)

a insertow wielokrotnych po prostu sie nie da(albo ja do tej pory nie
wiem jak). wiec pozostaje wpisywanie wszystkeigo po kolei.





TW - 11-05-2007 12:32

  On 23 Kwi, 22:33, Paweł Matejski <m...@spam.madej.pl.eu.org> wrote:
> smerf wrote:
> > Potrzebuje ograniczyć zapytanie do wyświetlenia pierwszego rekordu - na
> > bazie Oraclowej
> > W mySQLu dopuszczalna jest ponizsza postac tego zapytania, niestety w
> > PL/SQLu nie dziala LIMIT
> > select id, data from tabela order by data desc limit 1
>
> O ile dobrze pamiętam to where rownum <= 1
>
> --
> P.M.

rownum nadawany jest przed sortowaniem, więc nie zadziała...




TW - 11-05-2007 12:32

  On 24 Kwi, 08:30, dips <d...@sayno2s.pl> wrote:
> smerf napisał(a):
>
> > Potrzebuje ograniczyć zapytanie do wyświetlenia pierwszego rekordu - na
> > bazie Oraclowej
> > W mySQLu dopuszczalna jest ponizsza postac tego zapytania, niestety w
> > PL/SQLu nie dziala LIMIT
> > select id, data from tabela order by data desc limit 1
>
> > Drugi problem lezy przy wstawianiu w petli kilku rekordow. Zamiast
> > wrzucania każdego wiersza osobno, jak ponizej:
> > insert into tabela(imie, nazwisko, numer) values('Mmm', 'PPPP', 24)
> > insert into tabela(imie, nazwisko, numer) values('AAAA, 'WWW, 23)
> > potrzebuje zastapic to jednym zapytaniem dzialajacym w PL/SQLu
> > W mySQLu możliwe jest takie rozwiązanie przy uzyciu przecinka miedzy
> > wstawianymi rekordami:
> > insert into tabela(imie, nazwisko, numer) values('Mmm', 'PPPP', 24),
> > ('AAAA, 'WWW, 23)
>
> mialem te same pytania kiedys:)
>
> odnosnie limit tojak kolega napisal użyj rownum (unikalny id dla każdej
> wyselectowanej grupy rekordów)
>

tylko, jak napisałem powyżej, dostaniesz rekord z rownum=1 nadanym
przed sortowaniem

> a insertow wielokrotnych po prostu sie nie da(albo ja do tej pory nie
> wiem jak). wiec pozostaje wpisywanie wszystkeigo po kolei.




jerry - 11-05-2007 12:32

  smerf napisał(a):
> Potrzebuje ograniczyć zapytanie do wyświetlenia pierwszego rekordu - na
> bazie Oraclowej
> W mySQLu dopuszczalna jest ponizsza postac tego zapytania, niestety w
> PL/SQLu nie dziala LIMIT
> select id, data from tabela order by data desc limit 1

SELECT * FROM (
SELECT kol1, kol2 FROM tabela ORDER BY kol1
) WHERE ROWNUM = 1




Darek - 11-05-2007 12:32

  > > O ile dobrze pamiętam to where rownum <= 1
>
>rownum nadawany jest przed sortowaniem, więc nie zadziała...

Tu masz racje.
Mozna by za to uzyc funkcji rankingu ROW_NUMBER()

pozdrawiam
Darek




=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 11-05-2007 12:32

  TW wrote:
> On 23 Kwi, 22:33, Paweł Matejski <m...@spam.madej.pl.eu.org> wrote:
>> smerf wrote:
>>> Potrzebuje ograniczyć zapytanie do wyświetlenia pierwszego rekordu - na
>>> bazie Oraclowej
>>> W mySQLu dopuszczalna jest ponizsza postac tego zapytania, niestety w
>>> PL/SQLu nie dziala LIMIT
>>> select id, data from tabela order by data desc limit 1
>> O ile dobrze pamiętam to where rownum <= 1
>
> rownum nadawany jest przed sortowaniem, więc nie zadziała...

A... umkło mi to order by. :/

W takim wypadku robi sie to z podzapytaniem:

select * from (select id, data from tabela order by data desc) a
where rownym <=1

--
P.M.




=?ISO-8859-2?Q?S=B3awomir_Szysz=B3o?= - 11-05-2007 12:32

  Dnia Tue, 24 Apr 2007 08:30:26 +0200, dips <dips@sayno2s.pl> wklepał(-a):

>a insertow wielokrotnych po prostu sie nie da(albo ja do tej pory nie
>wiem jak). wiec pozostaje wpisywanie wszystkeigo po kolei.

Da się - FORALL ... INSERT, ale dane muszą być w tablicy (a właściwie to każda
kolumna musi być reprezentowana jako tablica 1-wymiarowa).
--
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
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?= [Oracle] jak =?ISO-8859-2?Q?ograniczy=E6_pami=EA=E6_dla_se?==?ISO-8859-2?Q?rwera=3F?= =?ISO-8859-2?Q?=5BOT=5D_Zdany_egzamin_Oracle_1Z0-007_a?==?ISO-8859-2?Q?_brak_informacji_na_stronie_Prometric_-_czy?==?ISO-8859-2?Q?_co=B6_nie_tak=3F?= jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?= [oracle] czy da =?ISO-8859-2?Q?si=EA_z_poziomu_procedury_?==?ISO-8859-2?Q?zrobi=E6_kopi=EA_zapasow=B1=3F?= [oracle 10g] czy =?ISO-8859-2?Q?mo=BFna_wy=B3=B1czy=E6_wszys?==?ISO-8859-2?Q?tkie_wi=EAzy_w_schemacie=3F?= MSSQL Express czy Oracle Express =?iso-8859-2?q?[oracle]_Jak_sprawdzi=E6_wielko=B6=E6_tabeli_=3F=3F?= =?ISO-8859-2?Q?Poszukjue_ksi=B1=BFki_"Oracle_?= =?ISO-8859-2?Q?optymalizacja_wydajno=B6ci"..?= [Oracle] =?ISO-8859-2?Q?=A3=B1czenie_wierszy_z_zapytania_?==?ISO-8859-2?Q?w_jeden_string?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • shutter.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