On 03/24/2016 06:17 PM, Ty Coghlan wrote:
I have the following simple code:

(require db)

(define mdb (mysql-connect #:user user #:password password))
(query-exec mdb "use starwarsfinal")
(query mdb "CALL track_character(?)" "Chewbacca")
(disconnect mdb).

Where track_character is a procedure that simply returns a simple
select statement. The query call to "Call track_character" fails with
the error "query: PROCEDURE starwarsfinal.track_character can't
return a result set in the given context SQLSTATE: 0A000", yet when I
run the select statement that the procedure runs as its own query, it
behaves as expected. I've noticed that this same error happens when
trying to call any procedure from mysql (functions work fine).
Looking this error up led me to find that it seems to be caused by
version errors, yet I have the most recent versions of both mysql and
racket. Any tips on how to figure this out?

The db library currently doesn't support MySQL CALL statements. You're getting that error because the db library doesn't set the "can handle multiple resultsets" flag when it connects to the server.

I can probably add support for CALL statements that return at most one resultset pretty easily. I'll try to do that soon.

Adding support for multi-resultset CALL statements would be trickier; it would require adding a new kind of structure that query can return, or cramming multiple resultsets into the existing structures.

Ryan

--
You received this message because you are subscribed to the Google Groups "Racket 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to