Para hacer más estable un procedimiento almacenado o stored procedure en SQL Server que trabaje con ficheros se puede realizar la comprobación de si el fichero en cuestión existe antes de empezar a procesarlo, de manera que sea más fácil de controlar el error que devuelve SQL Server cuando no existe. Esto es especialmente útil en los procesos de importación de ficheros.
La función que se puede utilizar para comprobar si existe un fichero es la siguiente. El único parámetro que recibe es la ruta y el nombre del fichero a comprobar, devolviendo un valor de tipo bit, valiendo 1 si existe y 0 si no existe. Como se puede observar, la función acaba llamando a la función propia de SQL Server llamada xp_fileexist.
CREATE FUNCTION dbo.fn_FileExists(@path varchar(8000)) RETURNS BIT AS BEGIN DECLARE @result INT EXEC master.dbo.xp_fileexist @path, @result OUTPUT RETURN cast(@result as bit) END
Un ejemplo de la llamada a esta función sería la siguiente:
SELECT dbo.fn_FileExists('C:\directorio\fichero.txt')
En caso de existir fichero.txt, retornará un 1, en caso contrario, un 0. Se puede buscar cualquier tipo de fichero, no tiene porque ser un archivo sql, txt o de cualquier extensión en concreto.
Muchas gracias, la información dada es la que buscaba.
Bendiciones.
Javier Tomas.