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