ďťż
 
[Oracle 10g - updateXML] - prosba o pomoc ďťż
 
[Oracle 10g - updateXML] - prosba o pomoc
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 10g - updateXML] - prosba o pomoc



Gordon - 11-05-2007 12:33
[Oracle 10g - updateXML] - prosba o pomoc
  Witam.
Mam taka strukture. Taki XML:

<B_PRACOWNIK>
<pracownik>
<imie>Tomasz</imie>
<nazwisko>Kowalski</nazwisko>
<telefon>55 641 43 32</telefon>
</pracownik>
<pracownik>
<imie>Jan</imie>
<nazwisko>Nowak</nazwisko>
<telefon>55 641 43 33</telefon>
</pracownik>
<pracownik>
<imie>Tadeusz</imie>
<nazwisko>Wiśniewski</nazwisko>
<telefon>55 641 43 33</telefon>
</pracownik>
</B_PRACOWNIK>

No i sie okazalo, ze zapomnialem w danych wszedzie wpisac '0' przed numerem
kierunkowym, chcialbym miec numer w takiej postaci 055 641 43 33.
No i problem mam taki, ze jak pisze
updateXML(object_value, '//pracownik/telefon/text()',
'0'||extractValue(object_value, '//pracownik/telefon'))
no to wcale mnie nie dziwi, ze dostaje blad, gdyz mam 3 telefony i nie
wiadomo, ktora wartosc chce pobrac do updateXML.
I nie mam pojecia jak napisac ten update aby w taki sposob pododawac
wszedzie 0 przed cyfre.

Bardzo prosze o pomoc bo juz sie zmeczylem.
Przyklad jest wymyslony w celu zadania pytania.
Pozdrawiam i dziekuję za ewentualne odpowiedzi.
Tomek.





szvej - 11-05-2007 12:33

  ja, gdybym byl madrzejszy, nie zrobilbym tak.. ale gdyby mi sie
dzisiaj spieszylo to tak wlasnie jak ponizej: [sql server 2005]

declare @plik xml
set @plik ='<B_PRACOWNIK>
<pracownik>
<imie>Tomasz</imie>
<nazwisko>Kowalski</nazwisko>
<telefon>55 641 43 32</telefon>
</pracownik>
<pracownik>
<imie>Jan</imie>
<nazwisko>Nowak</nazwisko>
<telefon>55 641 43 33</telefon>
</pracownik>
<pracownik>
<imie>Tadeusz</imie>
<nazwisko>Wiśniewski</nazwisko>
<telefon>55 641 43 33</telefon>
</pracownik>
</B_PRACOWNIK>'

declare @ilPracownikow int
set @ilPracownikow = @plik.value('count(/B_PRACOWNIK/pracownik/
telefon)', 'int')
declare @i int
declare @tmp varchar(400)
set @i = 0
while @i < @ilPracownikow
begin
set @i = @i + 1
set @tmp = @plik.value('(/B_PRACOWNIK/
pracownik[position()=sql:variable("@i")]/telefon)[1]', 'varchar(400)')
set @tmp = '0' + @tmp
set @plik.modify('replace value of (B_PRACOWNIK/pracownik[position()
= sql:variable("@i")]/telefon/text())[1]
with sql:variable("@tmp")')
end

select @plik

--
pozdrawiam,
szwejk

On 8 Maj, 14:27, "Gordon" <w...@op.pl> wrote:
> Witam.
> Mam taka strukture. Taki XML:
>
> <B_PRACOWNIK>
> <pracownik>
> <imie>Tomasz</imie>
> <nazwisko>Kowalski</nazwisko>
> <telefon>55 641 43 32</telefon>
> </pracownik>
> <pracownik>
> <imie>Jan</imie>
> <nazwisko>Nowak</nazwisko>
> <telefon>55 641 43 33</telefon>
> </pracownik>
> <pracownik>
> <imie>Tadeusz</imie>
> <nazwisko>Wiśniewski</nazwisko>
> <telefon>55 641 43 33</telefon>
> </pracownik>
> </B_PRACOWNIK>
>
> No i sie okazalo, ze zapomnialem w danych wszedzie wpisac '0' przed numerem
> kierunkowym, chcialbym miec numer w takiej postaci 055 641 43 33.
> No i problem mam taki, ze jak pisze
> updateXML(object_value, '//pracownik/telefon/text()',
> '0'||extractValue(object_value, '//pracownik/telefon'))
> no to wcale mnie nie dziwi, ze dostaje blad, gdyz mam 3 telefony i nie
> wiadomo, ktora wartosc chce pobrac do updateXML.
> I nie mam pojecia jak napisac ten update aby w taki sposob pododawac
> wszedzie 0 przed cyfre.
>
> Bardzo prosze o pomoc bo juz sie zmeczylem.
> Przyklad jest wymyslony w celu zadania pytania.
> Pozdrawiam i dziekuję za ewentualne odpowiedzi.
> Tomek.




Gordon - 11-05-2007 12:33

  Dzieki za odpowiedz.
Co prawda szukam czegos bardziej zblizonego do wykonania poprostu update z
uzyciem funkcji updateXML w oracle.
Ale pomysl z procedurka moze w ostatecznosci sie przydac.
Niestety tych plikow XML to mam kilka tysiecy do zupdatowania i dlatego
procedurka mi nie lezy pod wzgledem wydajnosci.
Ale ostatecznie takie rozwiazanie bede musial przyjac jesli inne sie nie
znajdzie.
Jeszcze raz dzieki za odpowiedz i za poswiecony czas.
Pozdrawiam Tomek.
  • 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?= =?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?= [oracle] czy da =?ISO-8859-2?Q?si=EA_z_poziomu_procedury_?==?ISO-8859-2?Q?zrobi=E6_kopi=EA_zapasow=B1=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
  • misida.pev.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