[unixODBC-support] Problem in using cursor to fetch millions of rows

Nick Gorham nick.gorham at easysoft.com
Wed Apr 6 18:12:45 BST 2005

Jerry Lam wrote:

>I would like to know how can I use the cursor such that it returns me 1 row at a time? My problem is that I'm using tclodbc which is an odbc layer on top of tcl and it makes call to unixodbc for SQL execution. 
>My table has some millions of rows, when I try the following, (sorry it is in tcl but it is very easy to follow) it will consume all the memory in my machine and force it to return error. How can I effectively use cursor to just ask to return 1 row at a time?
>Thank you very much,
>% package require tclodbc
>% database db "DRIVER=PostgreSQL;Servername=localhost;UID=xxx,PWD=xxx;Database=bar"
>%  db set autocommit 0
>% db statement stmt "select * from foo"
>% stmt set maxlength 200
>% stmt set maxrows 1
>% stmt execute

I would guess its down to TCL, all unixODBC will do is ask the driver 
what the app wants, it certainly won't store rows in memory. I would 
expect thats being done in the tclodbc layer.

Nick Gorham
Easysoft Limited

More information about the unixODBC-support mailing list