ďťż
 
db2 i xml - zapewne naiwny problem ďťż
 
db2 i xml - zapewne naiwny problem
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

db2 i xml - zapewne naiwny problem



szvej - 17-06-2007 00:19
db2 i xml - zapewne naiwny problem
  Witam!

Chcialem napisac funckje, ktora w parametrze dostalaby lancuch znakowy
clob ktory traktowalbym jak XML [bo jego zawartosc by na to
wskazywala]. W tym XMLu znajdowalyby sie jedynie id pewnych krotek
jakiejs tabeli. (np. '<produkt id="2" /><produkt id="13" />...')
Funkcja ta mialaby zwrocic lancuch znakowy clob z XMLem zawierajacym
informacje wyciagniete z krotek o podanych wczesniej id. (np.
'<towar><id>2</id><opis>bardzo fajny</opis><ilosc>12</ilosc></
towar><towar><id>13</id><opis>kieprawy</opis><ilosc>1</ilosc></
towar>...')

Wiem co chce, ale nie wiem jak to zrealizowac. Problem napotykam kiedy
szukam sposobu w jaki moge przegladac parametr. Na stronach
intrnetowych ibm znalazlem wiele informacji jak przegladac kolumny
typu XML tabel. Wydaje mi sie jednak, ze chyba nie ma sensu specjalnie
tworzyc tabele, aby mozna bylo uzywac wlasnie tamtych rozwiazan. A w
takim wypadku nie wiem jak sie do tego dobrac, bo alternatywnych
rozwiazan nie znalazlem. Gdybym mial juz te id wyjete z parametru w
jednej kolumnie i w osobnych komorkach wowczas nie byloby problemu
poleceniem xml2clob wygenerowac wyjsciowy lancuch znakow.

Bylbym bardzo wdzieczny za pomoc. Nie koniecznie w zaproponowany
sposob (tj. z tworzeniem tabeli, ktora laczylbym z tabela z
informacjami do wyciagniecia). Moze jakis inny, lepszy, szybszy,
prostrzy. Moze to jedno polecenie xmlQuery w polaczeniu z SQLem. Ja
jednak mam sladowe dowiadczenie w sql serverze z danymi xml a w db2 na
razie raczkuje wiec trudno mi zaproponowac wlasciwe rozwiazanie.

--
pozdrawiam najpiekniej i z gory dziekuje zapomoc!
Tomasz Ciesielski





frodo2000@gmail.com - 17-06-2007 00:19

  On 11 Cze, 18:11, szvej <szwe...@gmail.com> wrote:
> Witam!
>
> Chcialem napisac funckje, ktora w parametrze dostalaby lancuch znakowy
> clob ktory traktowalbym jak XML [bo jego zawartosc by na to
> wskazywala]. W tym XMLu znajdowalyby sie jedynie id pewnych krotek
> jakiejs tabeli. (np. '<produkt id="2" /><produkt id="13" />...')
> Funkcja ta mialaby zwrocic lancuch znakowy clob z XMLem zawierajacym
> informacje wyciagniete z krotek o podanych wczesniej id. (np.
> '<towar><id>2</id><opis>bardzo fajny</opis><ilosc>12</ilosc></
> towar><towar><id>13</id><opis>kieprawy</opis><ilosc>1</ilosc></
> towar>...')
>
> Wiem co chce, ale nie wiem jak to zrealizowac. Problem napotykam kiedy
> szukam sposobu w jaki moge przegladac parametr. Na stronach
> intrnetowych ibm znalazlem wiele informacji jak przegladac kolumny
> typu XML tabel. Wydaje mi sie jednak, ze chyba nie ma sensu specjalnie
> tworzyc tabele, aby mozna bylo uzywac wlasnie tamtych rozwiazan. A w
> takim wypadku nie wiem jak sie do tego dobrac, bo alternatywnych
> rozwiazan nie znalazlem. Gdybym mial juz te id wyjete z parametru w
> jednej kolumnie i w osobnych komorkach wowczas nie byloby problemu
> poleceniem xml2clob wygenerowac wyjsciowy lancuch znakow.
>
> Bylbym bardzo wdzieczny za pomoc. Nie koniecznie w zaproponowany
> sposob (tj. z tworzeniem tabeli, ktora laczylbym z tabela z
> informacjami do wyciagniecia). Moze jakis inny, lepszy, szybszy,
> prostrzy. Moze to jedno polecenie xmlQuery w polaczeniu z SQLem. Ja
> jednak mam sladowe dowiadczenie w sql serverze z danymi xml a w db2 na
> razie raczkuje wiec trudno mi zaproponowac wlasciwe rozwiazanie.
>
> --
> pozdrawiam najpiekniej i z gory dziekuje zapomoc!
> Tomasz Ciesielski

Aby wyci ga dane w postaci XMLa z tabeli relacyjnej najlepiej u ywa
SQL/XML. Poniewa dane maj by odpowiedzi na zapytanie aplikacji,
która wysy a dokument xml'owy, wi c warto przygotowa procedur
sk adowan .

Wyobra my sobie, e nasza tabela informacji o produkcje - PRODUCTS -
sk ada si z pól:
ID typu BIGINT (o warto ci generowanej automatycznie), QUANTITY typu
BIGINT oraz DESCRIPTION typu LONG VARCHAR

Wówczas nasza procedura sk adowana b dzie wygl da w sposób
nast puj cy:
CREATE PROCEDURE SELECT_PRODUCT (IN PROD_NUMBER_XML XML)
DYNAMIC RESULT SETS 1
------------------------------------------------------------------------
-- SQL Procedura sk adowana
------------------------------------------------------------------------
P1: BEGIN
-- Deklaruj kursor

DECLARE cursor1 CURSOR WITH RETURN FOR
WITH result(PRODUCT_ID, QUANTITY, DESCRIPTION) AS (
SELECT ID, QUANTITY, DESCRIPTION FROM PRODUCTS,
XMLTABLE(
'for $c in $a//produkt return $c'
passing PROD_NUMBER_XML as "a"
COLUMNS
prod_id BIGINT path '@id'
) as T
WHERE id=prod_id
) SELECT XMLELEMENT(
NAME "produkty",
XMLAGG(
XMLELEMENT(
NAME "towar",
XMLELEMENT(
NAME "id",
PRODUCT_ID
),
XMLELEMENT(
NAME "ilo ",
QUANTITY
),
XMLELEMENT(
NAME "opis",
DESCRIPTION
)
)
)
) FROM result;
OPEN cursor1;
END P1

Standardowo procedur wywo ujemy poleceniem CALL
SELECT_PRODUCT(XMLPARSE(DOCUMENT '<wybierz><produkt id="1" /
>...<produkt id="5" /></wybierz>'));

Dla przyk adu zamieszczam kod napisany w Javie do uruchamiania
procedury:
Class.forName("com.ibm.db2.jcc.DB2Driver");

String url = "jdbc:db2:test";
String user = "user";
String password = "*****";
Connection con = DriverManager.getConnection(url, user, password);

java.sql.Clob clobData =
com.ibm.db2.jcc.t2zos.DB2LobFactory.createClob("<w ybierz><produkt id=
\"1\" /><produkt id=\"5\" /></wybierz>");

PreparedStatement stmt = con.prepareStatement("CALL
SELECT_PRODUCT(XMLPARSE(DOCUMENT cast(? as Clob) strip whitespace))");
stmt.setClob(1,clobData);

ResultSet result = stmt.executeQuery();
while (result.next()){
DB2Xml productColumn = (DB2Xml)result.getObject(1);
System.out.println(productColumn.getDB2String());
}

----------------------
Pozdrawiam,
Marcin Molak
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?= mysql i mysql-front, problem String line; if (line=="cos"){...}....problem Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?= [postgres] Problem z =?ISO-8859-2?Q?zmian=B1_struktury_i_z?==?ISO-8859-2?Q?ale=BFno=B6ciami=2E?= [oracle] =?ISO-8859-2?Q?zmia=BFd=BFony_przez_problem=3A_za?==?ISO-8859-2?Q?pytanie_do_hierarchi?= Problem z wartościami w MySQL :( [ MySQL and ASP and VBScript ] [PGSQL] czy ktos mial problemy z initdb pgsql 8.1 ? [MySQL] Problem z zapisem danych w bazie danych Problem z mysql - can't connect to MySQL/nietypowo...
  • 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