¿Cómo puedo especificar la ruta a un archivo dinámicamente en OPENROWSET (BULK…)?
Quiero insertar imágenes en un campo de Imagen, preferiblemente utilizando un procedimiento almacenado que acepte una ruta a una imagen. Después de hackear, se me ocurrió esto;
-- functional
DECLARE @parameters nvarchar(max) = '';
DECLARE @sql_string nvarchar(max) =
N'UPDATE MyTable
SET MyImageField = (SELECT BulkColumn
FROM Openrowset(Bulk ''' + @PathToMyImage + ''', Single_Blob) ImageData)
WHERE MyPrimaryKey = ' + CAST(@PrimaryKey AS NVARCHAR(max));
EXECUTE sp_executesql @sql_string, @parameters
Hice esto porque cuando lo intenté;
--Not functional
INSERT INTO MyTable (MyImageField)
VALUES ((SELECT BulkColumn
FROM Openrowset(Bulk @PathToMyImage, Single_Blob) ImageData));
SQL Server lanza un error, quejándose de que Bulk espera una cadena. Preferiría no tener que recurrir a sp_executesql para mantenimiento / legibilidad, ¿hay una mejor manera de hacerlo?