/*Ingreso de nuevo codigo -------->inicio*/

viernes, 28 de noviembre de 2014

LLAMANDO PROCEDIMIENTOS DESDE UN PROCEDIMIENTO

Buenas tardes con todos estimados, en esta oportunidad quisiera compartirle un caso que tuve el día de ayer. Se trata de procedimientos almacenados.

Problema:
¿Como llamar a un procedimiento almacenado pero que este a su vez llame a otros procedimientos y este a otro?
Ejemplo
create pocedure sp_procedure1
as
begin
 exec sp_procedure2
end

create procedure sp_procedure2
as
begin
 declare @n int=1
 while n<=10
 begin
  exec sp_procedure3
 set @n=@n+1
 end
end
......
y así sucesivamente.

Creo que llamar a varios procedimientos es algo normal para un programador, sin embargo se me complicó cuando al llamar al 3cer procedimiento este devolvía un valor a traves de un select  y no a través de una variable de retorno, es decir el cuerpo del 3cer procedimiento era así:

create procedure sp_procedure3
as
begin
 --Muchas Validaciones....
.
.
.
 select @va_retorno as va_retorno
end

Este tercer procedimiento devolvía un valor y además estaba siendo llamado por el 2do procedimiento pero que estaba en un while, como hacer esto??  Aunque me demoré un poco, valió la pena aprender, les comparto:

1. Cree una variable tipo table
2. Use el insert into

Lo más importante sería esto, porque después de almacenar lo que retorna el procedimiento 3 puedes tratar como se te antoje estos datos. Mas o menos quedó así:

create procedure sp_procedure2
as
begin
 declare @result table (id int identity, valor int)
 declare @n int=1
 while n<=10
 begin
  inser into @result(valor)
  exec sp_procedure3
 set @n=@n+1
 end
end

Se que tendrán muchas preguntas, porque tal vez no se entendió la idea, sin embargo pueden hacerme llegar sus dudas, preguntas que gustosamente trataré de ayudarles. Hasta la próxima.

No hay comentarios:

Publicar un comentario