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

Recuperar valor de stored procedure dentro de otro

Estas en el tema de Recuperar valor de stored procedure dentro de otro en el foro de SQL Server en Foros del Web. Hola a todos les escribo porque estoy intentando como dice el titulo obtener un valor retornado por un stored procedure dentro de otro, estuve googleando ...
  #1 (permalink)  
Antiguo 13/07/2012, 08:50
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 8 meses
Puntos: 47
Recuperar valor de stored procedure dentro de otro

Hola a todos les escribo porque estoy intentando como dice el titulo obtener un valor retornado por un stored procedure dentro de otro, estuve googleando y encotnre cosas parecidas a lo que necesito pero no me han dado resultado o quiza yo no lo implemente bien xq soy bastante novato en .net y sql server, la sintaxis es mas o menos asi.

Código SQL:
Ver original
  1. ALTER PROCEDURE Insertar_Queja(
  2.     @apellido text,
  3.     @nombre text,
  4.     @dni INT,
  5.     @nac datetime,
  6.     @sexo CHAR(1),
  7.     @idCalle INT,
  8.     @idCalleX INT,
  9.     @idCalleY INT,
  10.     @altura text,
  11.     @nrocasa text,
  12.     @edificio text,
  13.     @manzana text,
  14.     @parcela text,
  15.     @depto text,
  16.     @escalera text,
  17.     @piso text,
  18.     @idBarrio INT,
  19.     @lote text,
  20.     @tel text,
  21.     @cel text,
  22.     @email text,
  23.     @obs Text
  24.     )
  25. AS
  26.  
  27. DECLARE @MSG VARCHAR(100);
  28. DECLARE @NDOC BIGINT;
  29. DECLARE @ERR VARCHAR(100);
  30.  
  31.  
  32.  
  33. SELECT @NDOC = ndoc FROM Solicitante WHERE ndoc = @dni;
  34.  
  35. IF ISNULL(@NDOC,0) = 0
  36.     EXEC sp_Insertar_Solicitante @apellido,@nombre,@dni,@nac,@sexo,@idCalle,@idCalleX,@idCalleY,@altura,@nrocasa,@edificio,@manzana,@parcela,@depto,@escalera,@piso,@idBarrio,@lote,@tel,@cel,@email,@obs

el procedimiento sp_Insertar_Solicitante retorna el id de dicho solicitante me gustaria saber como poder guardarlo en una variable sql server para luego utilizarla, desde ya muchas gracias.

Saludos
  #2 (permalink)  
Antiguo 13/07/2012, 09:14
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Recuperar valor de stored procedure dentro de otro

se hace con un output, una funcion para el procedure que retorna el valor a una variable

here
http://www.sqlteam.com/article/store...returning-data
and here
http://sqlserverpedia.com/wiki/Store..._Return_Values
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 13/07/2012, 10:14
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 8 meses
Puntos: 47
Respuesta: Recuperar valor de stored procedure dentro de otro

Hola libras gracias por contestar, lo que sucede es que con OUTPUT solo puede hacer retornar un parametro de entrada del stored procedure, y yo quiero recuperar el valor de una variable generada dentro del mismo, como si hiciera:

DECLARE @numero
SET @numero = 2

y quisiera retornar este valor en lugar de un parametro ingresado al stored procedure, existe alguna forma de lograr esto?

Muchas Gracias
  #4 (permalink)  
Antiguo 13/07/2012, 11:52
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Recuperar valor de stored procedure dentro de otro

RETURN @numero

Y lo cachas con :

EXEC @MyVar = usp_Procedimiento.............
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 13/07/2012, 11:59
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Recuperar valor de stored procedure dentro de otro

eso lo hace output tengo un procedimiento que hace eso mismo regreso un set de un valor usando output algo asi:

Código SQL:
Ver original
  1. CREATE PROCEDURE valores (@val1 INT output, @val2 INT output)
  2. AS
  3. BEGIN
  4.   SET @val1=100            
  5.   SET @val2=100
  6. END
  7.  
  8.  
  9. DECLARE @val1 INT
  10. DECLARE @val2 INT
  11. EXEC valores @val1 output,@val2 output
  12. print @val1
  13. print @val2
  14.  
  15. -----
  16. 100
  17. 100
saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 13/07/2012, 14:13
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Recuperar valor de stored procedure dentro de otro

Este tambien funciona, ya probado:

Código SQL:
Ver original
  1. CREATE PROCEDURE uspRegresaAlgo
  2. AS
  3.  BEGIN
  4.   SET nocount ON
  5.   DECLARE @Myvalor INT = 995
  6.   RETURN @Myvalor
  7.  END
  8.  
  9.  DECLARE @MiValor INT
  10.  EXEC @MiValor = uspRegresaAlgo
  11.  print @MiValor
__________________
MCTS Isaias Islas
  #7 (permalink)  
Antiguo 16/07/2012, 06:48
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 8 meses
Puntos: 47
Respuesta: Recuperar valor de stored procedure dentro de otro

Muchas Gracias a ambos me funciono utilizando return!!!

Saludos!!
  #8 (permalink)  
Antiguo 16/07/2012, 20:43
Avatar de MaLkAvIaN_NeT  
Fecha de Ingreso: marzo-2005
Ubicación: trujillo
Mensajes: 141
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: Recuperar valor de stored procedure dentro de otro

utiliza return
__________________
www.tecfactory.com

Etiquetas: insert, procedimiento, procedure, select, server, sql, stored
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 07:23.