Stored procedures anidados y recordsets resultantes

22/03/2007 - 20:21 por Manuel Vera | Informe spam
Hola

Tengo 1 stored proc el cual ejecuta a otro dentro de si. Por ejemplo:

create proc A
as

exec proc B

select from resultados
go

create proc B
as
insert into
select * from
go

El problema esta en que desde páginas ASP, utilizando ADO, al ejecutar A, se
trae dos recordsets y en mi codigo fuente ASP esta leyendo el recordset
resultante del proc B. En este caso, no me interesa ese recordset, solo me
interesa las acciones que se ejecutan en proc B y no el recordset
resultante. ¿Como puedo hacer para capturar el segundo recordset, es decir,
el que realmente devuelve proc A?

Gracias
Manuel

Preguntas similare

Leer las respuestas

#6 Manuel Vera
23/03/2007 - 14:10 | Informe spam
Si... voy a rediseñar la lógica del stored procedure B para separar esas
tareas.

Gracias
Manuel

"Javier Loria" escribió en el mensaje
news:%
Hola Manuel:
Si quieres reciclar un procedimiento que hace dos cosas, validar y
ejecutar, y en algunos casos solo te interesa la primera parte de
validacion, no seria lo natural tomar el codigo de ese procedimiento
dividirlo en 2 procedimientos (Validacion e Insercion) que sean invocados
secuencialmente cuando quieres hacer todo, y solo el primero si te
interesa unicamente la validacion?
Cualquier otra cosa seria una mala práctica de programacion.
Saludos,


Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.


"Manuel Vera" wrote in message
news:uj$
Hola Isaias

El SET NOCOUNT ON no me sirve pues lo que hace es activar o no el conteo
de registros. Sin embargo, lo que quisiera evitar es recibir en proc A
los registros resultantes de proc B.

"select * from" esto es solo un ejemplo.

El proc B es un proceso que originalmente utilizo en otra parte de código
y quiero reutilizar para no duplicar código. Sin embargo, el uso original
del proc es validar y ejecutar unas instrucciones para luego devolver
unos valores con la instrucción SELECT. Sucede que en el proc A ya no
quiero recibir el resultado de ese SELECT pues no me hace falta, pero si
todo lo que lo antecede.

Lo que se me acaba de ocurrir es agregar un parámetro nuevo a proc B que
me indique si devuelvo o no esos resultados. Pero esperaba encontrar algo
al estilo de SET FMTONLY que invalide la devolucion de filas/registros.
Cabe destacar que esa instrucción no me sirve pues al parecer anula la
ejecución del proc.

Gracias
Manuel


"Isaias" escribió en el mensaje
news:
Manuel

Derias consideras el uso de SET NOCOUNT ON.

Y claro, sin conocer a detalle el codigo de tus stores, ¿Porque hacer
un
select * from, en PROC B?
Saludos
IIslas


"Manuel Vera" wrote:

Hola

Tengo 1 stored proc el cual ejecuta a otro dentro de si. Por ejemplo:

create proc A
as

exec proc B

select from resultados
go

create proc B
as
insert into
select * from
go

El problema esta en que desde páginas ASP, utilizando ADO, al ejecutar
A, se
trae dos recordsets y en mi codigo fuente ASP esta leyendo el recordset
resultante del proc B. En este caso, no me interesa ese recordset, solo
me
interesa las acciones que se ejecutan en proc B y no el recordset
resultante. ¿Como puedo hacer para capturar el segundo recordset, es
decir,
el que realmente devuelve proc A?

Gracias
Manuel












Respuesta Responder a este mensaje
#7 Manuel Etcheto
23/03/2007 - 19:05 | Informe spam
Si bien no me parece buena práctica..., desde tu ado.recordset podes ignorar
el primero y pasar al segundo conjunto de datos.

Set Rs = Rs.NextRecordset
' aquí estarás trabajando con el segundo resulset...

Suerte
Manuel

"Manuel Vera" escribió en el mensaje
news:
Hola

Tengo 1 stored proc el cual ejecuta a otro dentro de si. Por ejemplo:

create proc A
as

exec proc B

select from resultados
go

create proc B
as
insert into
select * from
go

El problema esta en que desde páginas ASP, utilizando ADO, al ejecutar A,
se trae dos recordsets y en mi codigo fuente ASP esta leyendo el recordset
resultante del proc B. En este caso, no me interesa ese recordset, solo me
interesa las acciones que se ejecutan en proc B y no el recordset
resultante. ¿Como puedo hacer para capturar el segundo recordset, es
decir, el que realmente devuelve proc A?

Gracias
Manuel

Respuesta Responder a este mensaje
#8 Jose Mariano Alvarez
25/03/2007 - 01:28 | Informe spam
Crea un Stored C que tenga solo el insert y lo llamas desde A y desde B



Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)


IMPORTANTE

Por favor traten de indicar la versión de SQL y Service Pack.
La inclusión de (CREATE, INSERTS, etc.) para poder reproducir el problema
también ayuda.



"Manuel Vera" wrote in message
news:%
Tienes razon... postee mal el ejemplo... en realidad seria algo como:

create proc A
as

exec proc B

select from resultados
go
create proc B
as
insert into values
...
select * from
go

Gracias
MV


"Maxi" escribió en el mensaje
news:
Hola, no veo que hagas un select en el sP2, si lo probas de SQLServer
hace lo mismo? porque me da la sensacion que es un tema del ASP.NET

"Manuel Vera" escribió en el mensaje de
noticias news:
Hola

Tengo 1 stored proc el cual ejecuta a otro dentro de si. Por ejemplo:

create proc A
as

exec proc B

select from resultados
go

create proc B
as
insert into
select * from
go

El problema esta en que desde páginas ASP, utilizando ADO, al ejecutar
A, se trae dos recordsets y en mi codigo fuente ASP esta leyendo el
recordset resultante del proc B. En este caso, no me interesa ese
recordset, solo me interesa las acciones que se ejecutan en proc B y no
el recordset resultante. ¿Como puedo hacer para capturar el segundo
recordset, es decir, el que realmente devuelve proc A?

Gracias
Manuel








email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida