Estimados buenos dias, este es mi primer post. Estoy creando un script para copiar archivos segun el nombre (demasiado personalizado) y ete aqui que he probado de hacerlo con cursor o sin cursor y de las dos formas solo copia el primer archivo y no puedo hacerlo recorrer por toda la tabla.
No se fijen en la improlijidad del codigo es que lo necesito urgente para separar .mp3 de un archivo de mas de 10 mil.
Agradezco infinitamente cualquier ayuda.
sin cursor
--------------
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
alter procedure [dbo].[sp_copia_archivos_nocursor] as
-- -------------------------------
-- Argumentos
-- -------------------------------
-- <Argumentos tipo valor default descripcion>
declare
@loop int
,@counter int
,@nombre nvarchar(100)
,@ls_archivo_origen varchar(100) --archvio origen
,@ls_archivo_destino varchar(100) --archvio origen
,@pparte nvarchar(100)
,@sparte nvarchar(100)
,@sComando as varchar(200)
SET @loop = isnull((SELECT count(*) FROM nombre),0);
SET @counter= 1;
set @nombre = (select nombre from nombre where id = @counter);
set @pparte = 'c:\audios prueba\';
set @sparte = 'D:\b';
set @ls_archivo_origen = @pparte+@nombre+'.mp3';
set @ls_archivo_destino = @sparte;
set @sComando='XCOPY "' + @ls_archivo_origen +'" ' + @ls_archivo_destino;
WHILE @loop >0 and @counter <=@loop
begin
exec xp_cmdshell @sComando
SET @counter = @counter +1
select 0
return @@error
end
------------------------
con cursor
------------------------
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
alter procedure [dbo].[sp_copia_archivos_cursor] as
-- -------------------------------
-- Argumentos
-- -------------------------------
-- <Argumentos tipo valor default descripcion>
declare
@nombre varchar(100)
,@ls_archivo_origen varchar(100) --archvio origen
,@ls_archivo_destino varchar(100) --archvio origen
,@pparte nvarchar(100)
,@sparte nvarchar(100)
,@sComando as varchar(200)
set @pparte = 'c:\audios prueba\';
set @sparte = 'D:\b';
set @ls_archivo_origen = @pparte+@nombre+'.mp3';
set @ls_archivo_destino = @sparte;
set @sComando='XCOPY "' + @ls_archivo_origen +'" ' + @ls_archivo_destino
DECLARE
nnombre CURSOR FOR select nombre from nombre
OPEN nnombre
FETCH nnombre into @nombre
WHILE (@@FETCH_STATUS = 0 )
BEGIN
exec xp_cmdshell @sComando
FETCH nnombre into @nombre
select 0
return @@error
END
CLOSE nnombre
DEALLOCATE nnombre
Desde ya gracias