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
