Re: Using FETCH ALL with descriptor areas
От | andy rost |
---|---|
Тема | Re: Using FETCH ALL with descriptor areas |
Дата | |
Msg-id | 44D0E9E6.1010009@noaa.gov обсуждение исходный текст |
Ответ на | Re: Using FETCH ALL with descriptor areas (Joachim Wieland <joe@mcknight.de>) |
Список | pgsql-interfaces |
Worked like a charm. And its fast. Thanks Joachim Joachim Wieland wrote: > On Fri, Jul 28, 2006 at 03:35:06PM -0500, andy rost wrote: > >>Is it possible, in ECPG, to use FETCH ALL with descriptor areas? If so, >>can anyone provide a simple example. If not, does anyone have a get >>around. We've found FETCH NEXT to be pretty expensive when selecting >>even a modest number of tuples. > > > I don't know if it is what you're looking for nor if it is faster at all but > I attach an example with descriptors and auto-allocation. > > > Joachim > > > > ------------------------------------------------------------------------ > > #include <stdio.h> > exec sql include sqlca; > #include <stdlib.h> > exec sql include ../regression; > > int main(void) > { > exec sql begin declare section; > int *ip1=0; > char **cp2=0; > int *ipointer1=0; > int *ipointer2=0; > int colnum; > exec sql end declare section; > int i; > > ECPGdebug(1, stderr); > > exec sql whenever sqlerror do sqlprint(); > exec sql connect to REGRESSDB1; > > exec sql create table test (a int, b text); > exec sql insert into test values (1, 'one'); > exec sql insert into test values (2, 'two'); > exec sql insert into test values (NULL, 'three'); > exec sql insert into test values (4, 'four'); > exec sql insert into test values (5, NULL); > exec sql insert into test values (NULL, NULL); > > exec sql allocate descriptor mydesc; > exec sql select * into descriptor mydesc from test; > exec sql get descriptor mydesc :colnum=COUNT; > exec sql get descriptor mydesc value 1 :ip1=DATA, :ipointer1=INDICATOR; > exec sql get descriptor mydesc value 2 :cp2=DATA, :ipointer2=INDICATOR; > > printf("Result (%d columns):\n", colnum); > for (i=0;i < sqlca.sqlerrd[2];++i) > { > if (ipointer1[i]) printf("NULL, "); > else printf("%d, ",ip1[i]); > > if (ipointer2[i]) printf("NULL, "); > else printf("'%s', ",cp2[i]); > printf("\n"); > } > ECPGfree_auto_mem(); > printf("\n"); > > exec sql deallocate descriptor mydesc; > exec sql rollback; > exec sql disconnect; > return 0; > } -- -------------------------------------------------------------------------------- Andrew Rost National Operational Hydrologic Remote Sensing Center (NOHRSC) National Weather Service, NOAA 1735 Lake Dr. West, Chanhassen, MN 55317-8582 Voice: (952)361-6610 x 234 Fax: (952)361-6634 andy.rost@noaa.gov http://www.nohrsc.noaa.gov --------------------------------------------------------------------------------
В списке pgsql-interfaces по дате отправления: