Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Recibir Valor de un SP estando dentro de otro SP

Estas en el tema de Recibir Valor de un SP estando dentro de otro SP en el foro de Bases de Datos General en Foros del Web. Buenas tardes, Verán, mi problema es el siguiente: Dentro de un procedimiento almacenado, necesito llamar a otro, para uqe este me devuelva un valor. Dentro ...
  #1 (permalink)  
Antiguo 20/05/2005, 07:09
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 21 años, 5 meses
Puntos: 7
Recibir Valor de un SP estando dentro de otro SP

Buenas tardes,

Verán, mi problema es el siguiente:

Dentro de un procedimiento almacenado, necesito llamar a otro, para uqe este me devuelva un valor.

Dentro de mi Procedimiento, tengo lo siguiente:

SET @VARIABLE = EXEC OtroProcedimiento(parametros)

Sin embargo, no me funciona. ¿Como puedo hacer para recibir en @VARIABLE el valor de ese procedimiento?

Desde ya, gracias.


OtroProcedimiento, está configurado para que solo me devuelva un único valor, de un solo campo: select top 1 campo from tabla
__________________
Charlie.
  #2 (permalink)  
Antiguo 20/05/2005, 08:27
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 11 meses
Puntos: 38
Variable output

que tal?

Bueno con respecto a tu pregunta... no se si sea lo mas optimo pero yo acostumbro a obtener los valores en variables de tipo OUTPUT

en la sentencia de tu ejemplo seria mas o menos asi.

La llamada

EXEC OtroProcedimiento parametro1, ..., parametroN,@VARIABLE OUTPUT

Y en la definicion del SP

DECLARE OTROProcedimiento (
Parametro1 TipodeDato1,
...
ParametroN TipodeDatoN,
@Variable TipodeDatoVariable OUTPUT
)
AS
BEGIN
...
SELECT TOP 1 @Variable=campo from tabla
....

END



Espero te sirva...
  #3 (permalink)  
Antiguo 20/05/2005, 08:28
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 9 meses
Puntos: 50
Si quieres regresar valores no sería mas fácil usar una funcion..?? e inclusive esa funcion la puedes ocupar dentro de tus queries

Aclaro que todo depende de que estes haciendo.

Por cierto.. que BD estas usando.? , me imagino que por la sintaxis estas usando SQL Server vedad..?? si es así, te convendrá usars funciones.


Salu2 y cualquier cosa por aqui andamos..
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #4 (permalink)  
Antiguo 20/05/2005, 14:13
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años, 7 meses
Puntos: 25
El procedimiento que mencionas debería de funcionar.

¿En algún momento tu SP hace un RETURN "algo"?, por ejemplo

CREATE PROCEDURE jeje
AS
PRINT 'algo'
RETURN 1

Debería depositar un 1 en tu variable.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #5 (permalink)  
Antiguo 21/05/2005, 07:49
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 21 años, 5 meses
Puntos: 7
Bueno, mi procedimiento es simplemente algo asi:

CREATE PROCEDURE PDameCodigoProdh par1, par2, par3
as
SELECT TOP 1 @CADENA = tabla.unCampo from tabla
go


Bien, entonces, por lo visto, para recbir el resultado en una variable, ¿Valdria cambiarlo con esto?

CREATE PROCEDURE PDameCodigoProdh par1 varchar(3), par2 varchar(10)
as
DECLARE @parSalida varchar(30)
SELECT TOP 1 @parSalida= tabla.unCampo from tabla
print @parSalida
return 1
go


Para explotarlo:
set @unaVariable = exec PDameCodigoProdh 'un valor', 'otro valor'

¿ASI VALDRIA MITHRANDIR?
__________________
Charlie.
  #6 (permalink)  
Antiguo 23/05/2005, 15:59
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años, 7 meses
Puntos: 25
No, más bien algo como:

CREATE PROCEDURE PDameCodigoProdh par1 varchar(3), par2 varchar(10)
as
DECLARE @parSalida varchar(30)
SELECT TOP 1 @parSalida= tabla.unCampo from tabla
return @parSalida
go

Examina la opcion de las variables de salida, en daterminado momento te pueden servir quiza de mejor manera que un RETURN: (hecho al vuelo, puede tener errores)

CREATE PROCEDURE PDameCodigoProdh par1 varchar(3), par2 varchar(10),
@parSalida varchar(30) output
as
set @parSalida = 0
SELECT TOP 1 @parSalida= tabla.unCampo from tabla
go
------
declare @resultado varchar(30)
EXEC PDameCodigoProdh 'algo', 'algo', @resultado output
print @resultado
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:09.