Thanks Pierpaolo, I did not know about that useful trick with
call-with-values, missed it sometimes.

Ryan, thanks! in-values-sequence did the trick perfectly.

Regards,

Dmitry



On 02/05/2013 09:17 PM, Ryan Culpepper wrote:
On 02/05/2013 11:57 AM, Dmitry Pavlov wrote:
Hello,

Suppose I have the following code:

(define conn (sqlite3-connect #:database "mydb.db" ))

(for (((x y) (in-query c "SELECT X, Y FROM DATA")))
     (displayln x) (displayln y))

in-query returns a sequence that gives two values
at one call, and the "for" loop binds those values
to x and y respectively, and everything works fine.

Suppose then that I use an SELECT statement instrumented
in runtime, and that I do not know beforehand how many
values am I selecting. How do I get a list or a vector
of my values per each row?

It seems that I can not bind unknown number of
values in a "for" loop, can I?

Ideally, I would like a sequence that returns a list
(or a vector) of column values at each call.
query-row is close to what I need, but it can be used
only if I have only one row, so no sequence.

Any hints will be much appreciated.

I think you want 'query-rows' (plural), which produces a list of vectors.

If you want the cursor behavior of 'in-query', you could also try
wrapping the 'in-query' sequence with 'in-values-sequence'.

Ryan

____________________
  Racket Users list:
  http://lists.racket-lang.org/users



____________________
 Racket Users list:
 http://lists.racket-lang.org/users

Reply via email to