Ideando

agosto 4, 2007

Como ejecutar un comando msdos desde SQL

Filed under: programacion, sql, T-SQL — mrodriguez @ 5:52 pm

Existe un store procedure con el que se puede ejecutar una instrucción msdos desde sql. Se hace de esta forma:

exec master.dbo.xp_cmdshell ‘dir c:\ /b’

Esto nos entregará en forma de tabla el listado de la unidad c:\
De esta forma podríamos accesar archivos de un directorio y procesarlos de alguna forma en un store procedure:

set @query =’master.dbo.xp_cmdshell “dir c:\Directorio\ /b”‘
insert #x exec (@query)

Mas información útil en: http://www.insesys.com.mx

Como evitar el uso de cursores en Store procedures

Filed under: programacion, sql, T-SQL — mrodriguez @ 5:36 pm

Para evitar el uso de cursores se pueden crear tablas temporales con un campo identity.  Despues se puede usar esta tabla temporal para recorrerla en un ciclo usando el identity para identificar el registro que se requiere.   Un ejemplo de esto sería:

— Primero llenamos la tabla temporal  (#x) nuestra consulta principal
select identity(int,1,1) as ID, Campos into #x from Tabla

— Preparamos las variables que nos ayudarán con el barrido.
declare @maximo int
declare @cont int
declare @Campos char(10)
set @maximo = (select max(ID) from #x)
set @cont =0

— Seguimos con el ciclo que generará el barrido.
While @cont <= @maximo
begin
   set @cont=@cont+1
   set @Campos = (select Campos from #x where [id] = @cont)
   — Aquí se ponen las operaciones que sean necesarias.
end
— Listo!

Crea un blog o un sitio web gratuitos con WordPress.com.