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

#1 Isaias
22/03/2007 - 20:55 | Informe spam
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
#2 Manuel Vera
22/03/2007 - 21:39 | Informe spam
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
#3 Maxi
23/03/2007 - 00:11 | Informe spam
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

Respuesta Responder a este mensaje
#4 Javier Loria
23/03/2007 - 06:36 | Informe spam
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
#5 Manuel Vera
23/03/2007 - 14:07 | Informe spam
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




Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida