Ofta när vi arbetar med SQL måste vi veta om en fil finns i en lokal katalog eller inte. Detta kan göras med hjälp av SQL Servers inbyggda procedur som kallas master.dbo.xp_fileexist. Den här användardefinierade funktionen (UDF) kontrollerar huruvida en fil finns i en angiven katalog eller inte.
skapa FUNCTION dbo.fc_FileExists (@ path varchar (8000)) RETURNS BIT AS BEGIN DECLARE @ Resultat INT EXEC master.dbo.xp_fileexist @path, @result OUTPUT RETURN gjutna (@result som bit) END; GÅ
I funktionen ovan passerar vi parameter @ path och det inbyggda proceduren master.dbo.xp_fileexist kommer att kontrollera om filen verkligen finns på den angivna sökvägen. Funktionen kommer att returnera 1 om den existerar. Om filen inte existerar returnerar funktionen 0.
Låt oss se hur denna funktion utför med ett exempel.
välj dbo.fc_FileExists ('C: \ mywork \ tech-recipes.rar'); ----- 1 välj dbo.fc_FileExists ('C: \ mywork \ barfi.mp3'); ----- 0
Om du har ett bord med en kolumn som innehåller alla filvägar kan du även använda den här funktionen på bordet.
Skapa tabellfilelist (filnamn, filnamn varchar (max));
Låt oss infoga provdata.
Infoga i fillistorvärden (1, 'C: \ mywork \ tech-recipes.rar'); Infoga i fillistan VALUES (2, 'C: \ mywork \ barfi.mp3');
Här kan vi använda funktionen dbo.fc_FileExists (filnamn) för att kontrollera om filen finns eller ej.
Välj filnamn, filnamn, dbo.fc_FileExists (filnamn) som IsFileExists From filelist;
fileno filnamn IsFileExists ----------- ------------------------------------ ------------ 1 C: \ mywork \ tech-recipes.rar 1 2 C: \ mywork \ barfi.mp3 0
IsFileExists är en tillfällig kolumn. Om du vill göra det till en permanent kolumn måste du använda uppdateringsfrågan.