Re: Passing cursor between functions in embedded SQL
От | Sergey E. Volkov |
---|---|
Тема | Re: Passing cursor between functions in embedded SQL |
Дата | |
Msg-id | 9gnik9$2g97$1@news.tht.net обсуждение исходный текст |
Ответ на | Passing cursor between functions in embedded SQL (alla@sergey.com (Alla)) |
Список | pgsql-sql |
Hi Alla, Short answer - you can't. Cursor ( cursors' name ) in esql ALWAYS has a FILE scope ( correct me - global scope in ecpg ) so you can to use it anywhere ( in the file where it was defined ) without passing ones as parameter. However if you want to pass cursor as parameter I recommend you to use postgresql's c++ library or c library. It's best way to make a flexible application. ( For example in Informix's esqlc I can to define cursor as follows: *** exec sql begin declare section char *c1 = "my_first_cursor", *c2 = "my_second_corsor"; exec sql end declare section exec sql declare :c1 cursor for ...; exec sql declare :c2 cursor for ...; status = process_result_set(c1); status = process_result_set(c2); *** ecpg however doesn't support this syntax ... ) "Alla" <alla@sergey.com> ???????/???????? ? ???????? ?????????: news:9275d56e.0106181034.51a22104@posting.google.com... > Did anybody try to do something like this? > > int > open_cursor(...) > { > EXEC SQL DECLARE cur CURSOR FOR ... > > EXEC SQL OPEN cur; > > return cur1; /* how can I do that???? */ > } > > int > fetch_cursor(... cur) > { > EXEC SQL FETCH cur; > > return some data; > } > > That's how it's going to look in the calling program: > > cur := open_cursor; > > while (not found) > { > fetch_cursor(cur); > do some processing with the data > } > > > My point is I don't want to declare huge arrays or linked lists and > keep all the fetched data in the memory. I want to fetch a row, > process it and move on to the next one. > > May be there is another approach to do this? Please help > > Thanks > > Alla Gribov
В списке pgsql-sql по дате отправления: