I haven't worked myself with this part of the code, but I can show you how we did it.
Sergio - which database driver are you using and what is the expression to > read in multiple rows > FreeTDS This is how we performed a query: *clientes* | rows lista | rows := (self executeSQL: 'SELECT * from GVA14 order by NOM_COM') rows. lista := Dictionary new. rows do: [ :row | lista at: (row valueNamed: 'COD_CLIENT') put: (Cliente fromRow: row) ]. ^ lista *executeSQL: aSQLStatement* self ensureDBConnection. self dbType = 'MYSQL' ifTrue: [ ^ (self conn prepare: aSQLStatement) execute: #() ]. self dbType = 'ODBC' ifTrue: [ ^ (self conn query: aSQLStatement) execute asTable ] ifFalse: [ ^ self conn execute: aSQLStatement ] But the driver had several quirks, so we had to do this on ensureDBConnection *ensureDBConnection* [self dbType isNil ifTrue: [ self conn isConnected ifFalse: [ self conn connect ]. self conn isOpen ifFalse: [ [ self conn open ] on: DBXError do: [ self error: 'Error de conexion con la base de datos.' ]. self conn execute: 'SET ANSI_NULLS ON'. self conn execute: 'SET ANSI_WARNINGS ON' ]. ^* (self conn execute: 'select 1') rows first rawValues first = '1']* ifFalse: [^self ensureDBConnectionFor: self dbType]] on: Error do: [self error: 'Error de conexion con la base de datos']