Hola a todos tengo que hacer copias de tablas, y declarlo en tablas
temporales, las tablas las creo, pero no puedo hacer un select , les envio
tambien el query porque no descubro porque no funciona.
Ahora es necesario que se haga con declare table que es mas rapido que con
create table #tabla
Gracias,
Jorge
declare @pIDX int
sysobjects, solo contiene nombre de tablas.
declare @vtablas varchar(32),
@vcolumna varchar(100),
@vsentencia varchar(8000),
@vsql varchar(8000),
@idtabla int
set @pIDX = 12
select @vtablas= tblrep_nombre from tablas_replicar where
tblrep_indice=@pIDX
set @vsentencia =''
set @vcolumna=''
declare cursor_tabla cursor for
select ta.id, co.name+' '+td.name +''+
case td.name when 'bit' then ''
when 'char' then '('+cast(co.length as varchar(3))+')'
when 'datetime' then ''
when 'decimal' then '('+cast(co.xprec as varchar(3))+','+cast(co.xscale
as varchar(2))+')'
when 'int' then '('+cast(co.length as varchar(3))+')'
when 'tinyint' then '('+cast(co.length as varchar(3))+')'
when 'varchar' then '('+cast(co.length as varchar(3))+')' end +','
from syscolumns co
inner join sysobjects ta on ta.id=co.id and ta.name in (select
tblrep_nombre from TABLAS_REPLICAR)
inner join systypes td on co.xtype=td.xtype
WHERE ta.name =@vtablas
order by co.colorder
open cursor_tabla
fetch next from cursor_tabla into @idtabla, @vcolumna
while @@fetch_status = 0
begin
set @vsentencia = @vsentencia+char(13)+@vcolumna
fetch next from cursor_tabla into @idtabla, @vcolumna
end
close cursor_tabla
deallocate cursor_tabla
set @vsentencia = 'declare @a'+@vtablas+' table
('+left(@vsentencia,len(@vsentencia)-1)+')'
set @vsql ='select * from @a'+@vtablas
Leer las respuestas