Posted By: snake (keeping on the sunny side) on 'CZdatabases'
Title:     Re: Embedded SQL, Ccko a Select z neznameho poctu sloupcu
Date:      Mon Nov 22 01:42:35 1999

Diky za odpovedi! Tady jsou doplnujici otazky:

> > prehled, co se mi vytvorilo (=mohu si to nekam ulozit, treba i do 
> > databaze/vyhrazene tabulky). 
> Pokud mas konreolu nad db schematem, tak to je jina.

No kontrolu mam v tom smyslu, ze jej budu vytvaret. Nicmene mohu dostat 
napr. pozadavek na vytvoreni kterehokoli dalsiho sloupce.

> Obecne (bez kontroly db schematu) by to univerzalne (Oracle/PostgreSQL)
> neslo :-( 

Dobre, I'm sorry:-), ze jsem to neuvedl hned na zacatku. Nicmene jeste porad 
vidim problemy: ten pocet sloupcu neni predem dany (sice by se dal nejak 
omezit, ale proc to delat, IMHO to musi jit i bez toho): no a ja potrebuji 
mit k dispozici nastroj, ktery bude delat select podle libovolne (vhodnym 
zpusobem predane) query. 

Takze dostanu pozadavek na vyber 5.,7.,10., sloupce, vytvorim pozadovanou 
query, otevru kurzor a zacnu nacitat. Jenze. Jenze pro kazdy sloupec musim 
mit vyhrazenou prislusnou promennou. A tady narazim na problem: ESQL 
standardne vyzaduje, aby jmeno promenne bylo znamo pri kompilaci. Existuji 
sice dynamicke metody, ktere umozni takoveto nacitani, jake jsem ukazal, ale 
fakt netusim, jak vypadaji v Ccku (a navic prenositelne). Nepomuze nekdo?

Narazim minimalne na 2 problemy: na pocet tech promennych (kdyz si je vyhradim 
dopredu - pak bych musel omezit dopredu max. pocet sloupcu) a dal na jejich 
typ. Nemuzu nacitat real do intu atp. Jak to tedy udelat?

> > Mimochodem, umoznuje ESQL vyber urciteho sloupce (jako standardni vec, tj.
> > "vyber 3. sloupec")? Nebo je to jen zalezitost kazde konkretni databaze?

> Ted Ti nerozumim. Muzes provest dotaz do databaze nad tabulkou s 50ti
> soulpci 
> tak aby se Ti vratil treba 5., 7. a 13. sloupec (provedes SELECT <jmeno 5. 
> sloupce>, <7. sloupce>, <13. sloupce> from ...).

No slo mi o to, abych si nemusel udrzovat tu "pomocnou" tabulku. Protoze 
pozadavky na cteni budu dostavat maximalne v tom smyslu, abych precetl 
5.,7.,13. sloupec. Jak to zatim vidim ja, budu si muset vyzvednout z te 
pomocne tabulky nazvy tech sloupcu a teprve z toho sestavit query. Ale to neni 
moc problem. 

> Vysledek, tzv. result set, je x radku, kazdy o 3 sloupcich. Postupne musis 
> jednotlive radky nacitat do kurzoru (to je ten fetch) a muzes se odkazovat

Jo, to je ten fetch. Tak jak ho znam ja, musim pro kazdy sloupec vyhradit 
jednu promennou.

Tj. mam FETCH cursor INTO :var1, :var2, ... :varn,
  kde navic neznam typ, ktery budu potrebovat (takze to nelze "zfouknout" s
  kompilaci) -
ale mne by se hodilo spis FETCH cursor INTO :text.

A nebo pokud to nejde, jak mohu dosadit do kurzoru za behu programu ruzne 
promenne (budu asi v tom pripade nucen je dynamicky alokovat, ne?). Zatim jak 
tak koukam, nevyhnu se DESCRIBE a USING DESCRIPTOR:-| - to ale neovladam. 

> na dejme tomu 3. sloupec v danem radku result setu (ktery odpovida 13. 
> sloupci v tabulce). 

No odkazovat se na to muzu jedine tak, ze prectu obsah promenne, do ktere jsem 
FETCHnul, ne? Nebo mohu FETCHovat po jednotlivych promennych? (tj. v ramci 
radky navic jeste po sloupcich) 

> Nektere databaze Ti jeste umozni nechat si do result setu nacpat treba jen 
> prvnich 10 radku vysledku, ale to opravdu jak ktera databaze. 

Co je presne result set? Je to nejaka struktura v SQLDA?

> > dve veci od sebe oddelim? Na druhou stranu pro moje potreby by mi stacilo 
> > odlisovat pouze mezi dvema datovymi typy: int a real. 
> 
> Testovat ve spravnem poradi :-)
> Nejdrive Int a kdyz se to do nej nevejde, tak je to real...

No jo, ale kdy? Az po FETCHi? A do ceho to mam teda pak FETCHnout? Pokud to 
mam delat pri FETCHi, musel bych FETCHovat 2x - a to nejde. 

> Nektere databaze umoznuji provadet konverze datovych typu na strane serveru.
> Ale musis pro to znat nazev sloupce tabulky.

Tohle mohu zaridit:-)

> Ale pochybuju, ze by Oracle a PostgreSQL meli stejne konvertovaci funkce 
> (resp., ze PostgreSQL vubec nejake ma ;-))). 

Jo, tak to taky netusim, tak daleko jsem nedosel.

snake

Search the boards