Clonar DataReader

19/10/2007 - 00:06 por Javier Lozano | Informe spam
Saludos Compañeros

Tengo un stored procedure que me devuelve 3 conjuntos de resultados,
digamos:

Select From Customer
Select From Contact
Select From ContacAddress

Ese SP lo almaceno en un DataReader y accedo a cada conjunto de resultados
usando el metod NextResult. Necesito acceder a cada conjunto de resultados
por separado, algo que se me ocurrio fue clonar el data reader en 3 copias,
de esa forma accedo a los conjuntos de resultados por separado. No se como
se puede hacer o si existe una mejor manera de hacerlo, por eso acudo a este
foro para solicitar ayuda.

Gracias de antemano

Javier Lozano
Lima-Peru
 

Leer las respuestas

#1 Alberto Poblacion
19/10/2007 - 08:22 | Informe spam
"Javier Lozano" wrote in message
news:%
Tengo un stored procedure que me devuelve 3 conjuntos de resultados,
digamos:

Select From Customer
Select From Contact
Select From ContacAddress

Ese SP lo almaceno en un DataReader y accedo a cada conjunto de resultados
usando el metod NextResult. Necesito acceder a cada conjunto de
resultados por separado, algo que se me ocurrio fue clonar el data reader
en 3 copias, de esa forma accedo a los conjuntos de resultados por
separado. No se como se puede hacer o si existe una mejor manera de
hacerlo, por eso acudo a este foro para solicitar ayuda.



No creo que se pueda hacer lo que quieres. Piensa que el DataReader es un
cursor de Solo-marcha-alante, lo cual significa que los resultados se
reciben secuencialmente y que una vez que has leido un resultado no puedes
volver atrás. Así que tienes que extraer todos los registros de cada Select
antes de que te lleguen desde el servidor los registros del siguiente
select. Si quieres poder leer en paralelo los registros de los tres selects,
vas a tener que crear tres datareaders (lo cual implica abrir tres
conexiones, a no ser que puedas habilitar MARS). La alternativa, si el
número de registros es modesto, es guardarlos en memoria (por ejemplo en un
DataSet) y luego tratarlos desde ahi.

Preguntas similares