ďťż
 
UPDATE tabname SET * = ? - Oracle vs Informix ďťż
 
UPDATE tabname SET * = ? - Oracle vs Informix
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

UPDATE tabname SET * = ? - Oracle vs Informix



jakejake@gazeta.pl - 27-07-2006 01:59
UPDATE tabname SET * = ? - Oracle vs Informix
  Witam

W Informixie mam zdanie UPDATE tabname SET * = $zmienna i to dziala
(zmienna jest struktura zawierajaca pola tablicy).
Jak zapisac to w Oraclu bez wymieniania kolumn - chce uzywac tego
dynamicznie dla roznych tablic? Czy w ogole sie da? Gwiazdka nie dziala
- oczekuje nazwy kolumny.





Sławomir Szyszło - 27-07-2006 02:00

  Dnia 26 Jul 2006 05:39:15 -0700, jakejake@gazeta.pl wklepał(-a):

>Witam
>
>W Informixie mam zdanie UPDATE tabname SET * = $zmienna i to dziala
>(zmienna jest struktura zawierajaca pola tablicy).
>Jak zapisac to w Oraclu bez wymieniania kolumn - chce uzywac tego
>dynamicznie dla roznych tablic? Czy w ogole sie da? Gwiazdka nie dziala
>- oczekuje nazwy kolumny.

Można to zrobić, ale w PL/SQL:

1.
create table test1 (id number not null primary key,
desc1 varchar2(200) not null,
desc2 varchar2(200)
);

2. Wstawiamy rekordy o wartościach:
(1, 'A')
(2, 'B')
(3, 'C')

3. Aktualizujemy rekordy 1-3
DECLARE
TYPE id_tab IS TABLE OF test1.id%TYPE;
TYPE test1_tab IS TABLE OF test1%ROWTYPE;
t_id id_tab := id_tab();
t_tab test1_tab := test1_tab();
BEGIN
-- przygotowanie danych w tabeli pl/sql
FOR i IN 1 .. 3 LOOP
t_id.extend;
t_tab.extend;
t_id(t_id.last) := i; -- tabela "licznikowa"
t_tab(t_tab.last).id := i; -- tabela właściwa
t_tab(t_tab.last).desc1 := 'update na = ' || To_Char(i);
t_tab(t_tab.last).desc2 := 'update na = ' || To_Char(i);
END LOOP;

FORALL i IN t_tab.first .. t_tab.last
UPDATE test1
SET ROW = t_tab(i)
WHERE id = t_id(i);
END;

4. SELECT * FROM TEST1;
--
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




jakejake@gazeta.pl - 29-07-2006 01:07

 
Sławomir Szyszło napisał(a):

> Można to zrobić, ale w PL/SQL:
>
> 1.
> create table test1 (id number not null primary key,
> desc1 varchar2(200) not null,
> desc2 varchar2(200)
> );
>
> 2. Wstawiamy rekordy o wartościach:
> (1, 'A')
> (2, 'B')
> (3, 'C')
>
> 3. Aktualizujemy rekordy 1-3
> DECLARE
> TYPE id_tab IS TABLE OF test1.id%TYPE;
> TYPE test1_tab IS TABLE OF test1%ROWTYPE;
> t_id id_tab := id_tab();
> t_tab test1_tab := test1_tab();
> BEGIN
> -- przygotowanie danych w tabeli pl/sql
> FOR i IN 1 .. 3 LOOP
> t_id.extend;
> t_tab.extend;
> t_id(t_id.last) := i; -- tabela "licznikowa"
> t_tab(t_tab.last).id := i; -- tabela właściwa
> t_tab(t_tab.last).desc1 := 'update na = ' || To_Char(i);
> t_tab(t_tab.last).desc2 := 'update na = ' || To_Char(i);
> END LOOP;
>
> FORALL i IN t_tab.first .. t_tab.last
> UPDATE test1
> SET ROW = t_tab(i)
> WHERE id = t_id(i);
> END;
>
> 4. SELECT * FROM TEST1;

Nie, odpada. To jest program w sqlc, ktory dziala zarowno pod
informixem i oraclem.
Krotko mowiac musze przetlumaczyc te instrukcje na oraclowa.
Chyba nie pozostaje nic innego jak spreparowac zdanie z wymienieniem
wszystkich kolumn.




dap - 30-07-2006 00:45

 
> Nie, odpada. To jest program w sqlc, ktory dziala zarowno pod
> informixem i oraclem.
> Krotko mowiac musze przetlumaczyc te instrukcje na oraclowa.
> Chyba nie pozostaje nic innego jak spreparowac zdanie z wymienieniem
> wszystkich kolumn.

Moim zdaniem lepiej wersje dla Informixa i Oracla, czas na to poświecony
zwróci się czasie wykonywania tych poleceń. Najgorsze są instrukcje
działające tak samo wolno w każdej bazie :)

dap

--
,= ,-_-. =. gnu.org
((_/)o o(\_)) polanski.biz
`-'(. .)`-' xoops.pl
\_/





jakejake@gazeta.pl - 30-07-2006 00:45

 
dap napisał(a):
> > Nie, odpada. To jest program w sqlc, ktory dziala zarowno pod
> > informixem i oraclem.
> > Krotko mowiac musze przetlumaczyc te instrukcje na oraclowa.
> > Chyba nie pozostaje nic innego jak spreparowac zdanie z wymienieniem
> > wszystkich kolumn.
>
> Moim zdaniem lepiej wersje dla Informixa i Oracla, czas na to poświecony
> zwróci się czasie wykonywania tych poleceń. Najgorsze są instrukcje
> działające tak samo wolno w każdej bazie :)
>

Tak by bylo najlepiej, ale aplikacja ma kilka milionow linii kodu i
ponad tysiac plikow zrodlowych, wiec poprawianie specjalnie dla oracla
i osobno dla informixa raczej odpada. Musi byc tlumacznie w locie.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Oracle, SQL, PL/SQL. Jak =?ISO-8859-2?Q?napisa=E6_zapytanie=2C?==?ISO-8859-2?Q?_kt=F3re_zwr=F3ci_nazw=EA_atrybutu=2C_kt=F3reg o?==?ISO-8859-2?Q?_warto=B6ci_spe=B3niaj=B1_zadany_warunek?= Oracle 19g +Insert +Insert +Insert... [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?= [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
  • lisinski.htw.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