store procedure reutilizable
Publicado por Maria Eugenia Paradas (6 intervenciones) el 17/12/2007 18:12:10
Hola buenos días,
Necesito ayuda respecto a un tema en sqlserver 2005: Tengo varias bases de datos que utilizan el mismo store procedure, en cada una de las bases se debe modificar el nombre de la tabla cada vez que se utiliza, quisiera pasarle el nombre de la tabla por parámetro para utilizar solo uno. Para esto se utilizan 2 tablas 1(la origen) y 2 (la destino); la origen es donde obtengo los datos y la destino donde las guardo siempre y cuando no exista el registro. Aqui esta un ejemplo del procedimiento:
CREATE PROCEDURE mepm_insertar_telfonos_domicilio
AS
BEGIN
DECLARE
@cedula varchar(20),
@cod_area varchar(1),
@numero varchar(10),
@confiabilidad INT
declare cc cursor for
select numafi,substring(telafi,1,1),substring(telafi,2,7),conf_afi from tabla_origen where len(telafi)=8
open cc
select @contador=1 fetch next from cc into @cedula,@cod_area,@numero,@confiabilidad
while (@@fetch_status =0)
BEGIN
if not exists (select 1 from tabla_destino where cedula=@cedula and cod_area=@cod_area and numero=@numero)
begin
insert tabla_origen (cedula,cod_area,numero,idfuente,confiabilidad,tipo,clase)
values(@cedula,@cod_area,@numero,162,@confiabilidad,
case when @cod_area="9" then "CEL"
else "LCL" end,
case when @cod_area="9" then "M"
else "H" end)
end
fetch next from cc into @cedula,@cod_area,@numero,@confiabilidad
END
close cc
deallocate cc
END
-------------------------------------------------------------------------------------------------------------------------------
Ahora, me gustaría saber como elaborar la instruccion del cursor y la del if para poder lograr esto, ya que he intentado varias veces utilizando el exec() con una variable varchar que yo construyo, anexandole los parametros con los nombres de las tablas y no me la reconece.
Les agradeceria mucho su ayuda, Saludos,
Maru
Necesito ayuda respecto a un tema en sqlserver 2005: Tengo varias bases de datos que utilizan el mismo store procedure, en cada una de las bases se debe modificar el nombre de la tabla cada vez que se utiliza, quisiera pasarle el nombre de la tabla por parámetro para utilizar solo uno. Para esto se utilizan 2 tablas 1(la origen) y 2 (la destino); la origen es donde obtengo los datos y la destino donde las guardo siempre y cuando no exista el registro. Aqui esta un ejemplo del procedimiento:
CREATE PROCEDURE mepm_insertar_telfonos_domicilio
AS
BEGIN
DECLARE
@cedula varchar(20),
@cod_area varchar(1),
@numero varchar(10),
@confiabilidad INT
declare cc cursor for
select numafi,substring(telafi,1,1),substring(telafi,2,7),conf_afi from tabla_origen where len(telafi)=8
open cc
select @contador=1 fetch next from cc into @cedula,@cod_area,@numero,@confiabilidad
while (@@fetch_status =0)
BEGIN
if not exists (select 1 from tabla_destino where cedula=@cedula and cod_area=@cod_area and numero=@numero)
begin
insert tabla_origen (cedula,cod_area,numero,idfuente,confiabilidad,tipo,clase)
values(@cedula,@cod_area,@numero,162,@confiabilidad,
case when @cod_area="9" then "CEL"
else "LCL" end,
case when @cod_area="9" then "M"
else "H" end)
end
fetch next from cc into @cedula,@cod_area,@numero,@confiabilidad
END
close cc
deallocate cc
END
-------------------------------------------------------------------------------------------------------------------------------
Ahora, me gustaría saber como elaborar la instruccion del cursor y la del if para poder lograr esto, ya que he intentado varias veces utilizando el exec() con una variable varchar que yo construyo, anexandole los parametros con los nombres de las tablas y no me la reconece.
Les agradeceria mucho su ayuda, Saludos,
Maru
Valora esta pregunta


0