IMAGEN en una SELECT

En caso de que queramos incorporar una imagen en una instrucción SELECT de SQL podemos usar la función OPENROWSET. Por ejemplo:

SELECT * FROM OPENROWSET(BULK N'X:\Imagenes\Obra002.jpg', SINGLE_BLOB) AS Imagen

Si lo que queremos es generar la lista de imágenes en una tabla, por ejemplo cargar las imágenes en la tabla de artículos de a3ERP podemos usar el siguiente procedimiento:

Para importar imágenes por SQL a la tabla ARTICULOS:

1.- Crear un directorio C:\FOTOSERP en el que introducimos todas las imágenes con el formato codigo_articulo.jpg

2.- Crear una tabla en SQL con un campo llamado FICHEROIMAGEN en el que colocamos el nombre del fichero jpg que coincide con el código del artículo de nuestro A3ERP (ejemplo: a125.jpg para el artículo a125). Esta tabla la podemos alimentar simplemente pegando la columna correspondiente de una Excel en la que hemos importado el txt que generamos del directorio donde están todas las imágenes con el comando "dir > imagenes.txt"

CREATE TABLE SOMA_LISTAIMAGEN 
(FICHEROIMAGEN NVARCHAR(19)) 


3. Ejecutar la siguiente vista para importar todas las imágenes:

DECLARE @SQL AS NVARCHAR(2000) 
DECLARE @ImgFilename AS VARCHAR(19)
DECLARE filelist CURSOR FOR SELECT FICHEROIMAGEN FROM SOMA_LISTAIMAGEN

OPEN filelist 
FETCH NEXT FROM filelist INTO @ImgFilename WHILE (@@FETCH_STATUS = 0) 

BEGIN 

   SET @SQL = 'UPDATE ARTICULO SET IMAGEN = (SELECT img.bulkcolumn FROM OPENROWSET(BULK     N''C:\FOTOSERP\'+@ImgFilename+''', SINGLE_BLOB) AS img)
   WHERE LTRIM(CODART) =substring('''+''+@ImgFilename+''',1,len('''+''+@ImgFilename+''')-4)'

    EXEC sp_executesql @SQL

   FETCH NEXT FROM filelist INTO @ImgFilename

END 

CLOSE filelist DEALLOCATE filelist

update articulo set tipoimagen='JPG' where imagen is not null