Como tomar el resultado de un procedimiento almacenado

30/07/2003 - 23:03 por Misael Angel Blandón Pérez | Informe spam
Hola Miembros del grupo,

Estoy llamando un procedimiento almacenado desde otro. El procedimiento
almacenado que llamo finaliza con un select que arroja varios registros, la
idea mia es tomar el resultado de ese select y hacer otras operaciones en el
procedimiento inicial.

Uno podría utilizar una tabla pública que guardara el resultado del segundo
procedimiento para después manipular dicha tabla en el procedimiento
inicial, pero el segundo procedimiento está concebido para otros fines y la
idea es no modificarlo en lo posible.

Diganme si existe otra alternativa para obtener el resultado del segundo
procedimiento y poder manipularlo en el primero, pero sin necedidad de
modificar el procedimiento que se está llamando.

Espero que hayan entendido mi Inquietud.

Por su colaboración mil gracias


Cordialmente,

Misael

Preguntas similare

Leer las respuestas

#1 Mario Vargas
30/07/2003 - 23:11 | Informe spam
Misael,

Vas a tener que usar una funcion definida de usuario. Revisa "CREATE
FUNCTION" en BOL. La que necesitas es la sentencia que devuelve una tabla.

Mario

"Misael Angel Blandón Pérez" wrote in message
news:
Hola Miembros del grupo,

Estoy llamando un procedimiento almacenado desde otro. El procedimiento
almacenado que llamo finaliza con un select que arroja varios registros,


la
idea mia es tomar el resultado de ese select y hacer otras operaciones en


el
procedimiento inicial.

Uno podría utilizar una tabla pública que guardara el resultado del


segundo
procedimiento para después manipular dicha tabla en el procedimiento
inicial, pero el segundo procedimiento está concebido para otros fines y


la
idea es no modificarlo en lo posible.

Diganme si existe otra alternativa para obtener el resultado del segundo
procedimiento y poder manipularlo en el primero, pero sin necedidad de
modificar el procedimiento que se está llamando.

Espero que hayan entendido mi Inquietud.

Por su colaboración mil gracias


Cordialmente,

Misael


Respuesta Responder a este mensaje
#2 Miguel Egea
31/07/2003 - 12:20 | Informe spam
eso es porque tienes SQl 7.0 o 2000 en compatibilidad con 7.0.
Puedes recoger el resultado de un procedimiento almacenado en una tabla
temporal. Creo que en portalsql.com hay algún ejemplo pero en cualquier caso
es muy sencillo

insert into tabla exec procedimientoquedevuelvaregistros





Espero que te sirva.

Saludos
Miguel Egea
http://www.portalsql.com
Sql-Server MVP

"Misael Angel Blandón Pérez" escribió en el
mensaje news:
Hola Mario,

Gracias por tu ayuda.

Revisé la función y traté de hacer el ejemplo que aparece en las BOL pero


me
aparece el siguiente error:

Función :

USE pubs
GO
CREATE FUNCTION prueba (@storeid varchar(30))
RETURNS TABLE
AS
RETURN (SELECT title, qty
FROM sales s, titles t
WHERE s.stor_id = @storeid and
t.title_id = s.title_id)

Error:

Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near 'FUNCTION'.
Server: Msg 137, Level 15, State 1, Line 6
Must declare the variable '@storeid'.

Por tu colaboración gracias.

Att,

MISAEL

"Mario Vargas" escribió en el mensaje
news:
> Misael,
>
> Vas a tener que usar una funcion definida de usuario. Revisa "CREATE
> FUNCTION" en BOL. La que necesitas es la sentencia que devuelve una


tabla.
>
> Mario
>
> "Misael Angel Blandón Pérez" wrote in message
> news:
> > Hola Miembros del grupo,
> >
> > Estoy llamando un procedimiento almacenado desde otro. El


procedimiento
> > almacenado que llamo finaliza con un select que arroja varios


registros,
> la
> > idea mia es tomar el resultado de ese select y hacer otras operaciones
en
> el
> > procedimiento inicial.
> >
> > Uno podría utilizar una tabla pública que guardara el resultado del
> segundo
> > procedimiento para después manipular dicha tabla en el procedimiento
> > inicial, pero el segundo procedimiento está concebido para otros fines


y
> la
> > idea es no modificarlo en lo posible.
> >
> > Diganme si existe otra alternativa para obtener el resultado del


segundo
> > procedimiento y poder manipularlo en el primero, pero sin necedidad de
> > modificar el procedimiento que se está llamando.
> >
> > Espero que hayan entendido mi Inquietud.
> >
> > Por su colaboración mil gracias
> >
> >
> > Cordialmente,
> >
> > Misael
> >
> >
>
>


Respuesta Responder a este mensaje
#3 Mario Vargas
31/07/2003 - 16:02 | Informe spam
Misael,

Espero que no sea muy tarde para responder.

El error es porque tienes que agregar el dueno de la funcion cuando declares
el nombre de la funcion: "dbo.prueba" en vez de "prueba". Lo mismo se tiene
que hacer cuando uno invoca la funcion. Yo no se porque tiene uno que hacer
esto porque uno no tiene por que cuando uno declara procedimientos
almacenados.

USE pubs
GO
CREATE FUNCTION dbo.prueba (@storeid varchar(30))
RETURNS TABLE
AS
RETURN (SELECT title, qty
FROM sales s, titles t
WHERE s.stor_id = @storeid and
t.title_id = s.title_id)

Cuando la funcion sea creada, ejecutala de esta forma. Aqui estoy
devolviendo el record de el stor_id '7131':

SELECT *
FROM dbo.prueba( '7131' )

O tambien:

SELECT title, qty
FROM dbo.prueba( '7131' )

Buena suerte...

Mario

"Misael Angel Blandón Pérez" wrote in message
news:
Hola Mario,

Gracias por tu ayuda.

Revisé la función y traté de hacer el ejemplo que aparece en las BOL pero


me
aparece el siguiente error:

Función :

USE pubs
GO
CREATE FUNCTION prueba (@storeid varchar(30))
RETURNS TABLE
AS
RETURN (SELECT title, qty
FROM sales s, titles t
WHERE s.stor_id = @storeid and
t.title_id = s.title_id)

Error:

Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near 'FUNCTION'.
Server: Msg 137, Level 15, State 1, Line 6
Must declare the variable '@storeid'.

Por tu colaboración gracias.

Att,

MISAEL

"Mario Vargas" escribió en el mensaje
news:
> Misael,
>
> Vas a tener que usar una funcion definida de usuario. Revisa "CREATE
> FUNCTION" en BOL. La que necesitas es la sentencia que devuelve una


tabla.
>
> Mario
>
> "Misael Angel Blandón Pérez" wrote in message
> news:
> > Hola Miembros del grupo,
> >
> > Estoy llamando un procedimiento almacenado desde otro. El


procedimiento
> > almacenado que llamo finaliza con un select que arroja varios


registros,
> la
> > idea mia es tomar el resultado de ese select y hacer otras operaciones
en
> el
> > procedimiento inicial.
> >
> > Uno podría utilizar una tabla pública que guardara el resultado del
> segundo
> > procedimiento para después manipular dicha tabla en el procedimiento
> > inicial, pero el segundo procedimiento está concebido para otros fines


y
> la
> > idea es no modificarlo en lo posible.
> >
> > Diganme si existe otra alternativa para obtener el resultado del


segundo
> > procedimiento y poder manipularlo en el primero, pero sin necedidad de
> > modificar el procedimiento que se está llamando.
> >
> > Espero que hayan entendido mi Inquietud.
> >
> > Por su colaboración mil gracias
> >
> >
> > Cordialmente,
> >
> > Misael
> >
> >
>
>


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