SQL Server offre la possibilità di controllare se un file esiste. Vediamo come.
Tramite una procedura interna di SQL è possibile controllare l’esistenza di un file. La procedura è xp_fileexist e va usata così
EXEC master..xp_fileexist 'C:\immagine.jpg'
viene riportato 1 se il file esiste, oppure 0 se non esiste.
In un caso pratico ho dovuto controllare l’esistenza di un certo numero di files, il cui nome era memorizzato in una tabella. Per fare questo, ho innanzitutto creato una funzione (udf) che effettuasse il controllo e ritornasse il flag di trovato/non trovato
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <EDC> -- Create date: <05.sep.2009> -- Description: <Check file exist> -- ============================================= ALTER FUNCTION udf_FileExist ( @in_FileName VARCHAR(512) ) RETURNS INT AS BEGIN DECLARE @out_result INT EXEC master..xp_fileexist @in_FileName, @out_result OUT RETURN ISNULL(@out_result,0) END GO
La funzione udf_FileExist accetta in input il nome del file (percorso completo) e restituisce un intero che varrà 1 se il file esiste, oppure 0 se non esiste.
Per usarla, sarà sufficiente richiamare la funzione nella query, così:
SELECT NomeFile, dbo.udf_FileExist(NomeFile) AS Esiste FROM Tabella_Files