1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
| ALTER PROCEDURE [dbo].[P_FOLDER_GETFILES] @NOM_DOSSIER NVARCHAR(256)
--@FILE_HANDLE INTEGER OUTPUT,
--@FOLDER_ID INTEGER OUTPUT
AS
/**********************************************************************
* MANIPULATION DE FICHIER PAR OLE SOUS MS SQL SERVER 2000 - CREATE F *
***********************************************************************
* FREDERIC BROUARD - 2006-01-02 - http://sqlpro.developpez.com *
**********************************************************************/
SET NOCOUNT ON
DECLARE @OLEHDL INTEGER
DECLARE @FILE_HANDLE INTEGER
DECLARE @FOLDER_ID INTEGER
DECLARE @FOLDERINFOS INTEGER
DECLARE @NBFICHIERS INTEGER
DECLARE @FileItem int
DECLARE @FileName varchar(100)
--DECLARE @ItemSelect varchar (20)
DECLARE @Dir table ( FileName varchar(100))
-- création de l'objet OLE d'écriture en fichier
EXECUTE @OLEHDL = sp_OACreate 'Scripting.FileSystemObject',
@FILE_HANDLE OUT
IF @OLEHDL <> 0
BEGIN
RAISERROR('Le dossier %s n''a pu être récupéré', 16, 1, @NOM_DOSSIER)
RETURN
END
-- Récupération du dossier
EXECUTE @OLEHDL = sp_OAMethod @FILE_HANDLE,
'GetFolder',
@FOLDER_ID OUTPUT,
@NOM_DOSSIER
IF @OLEHDL <> 0
BEGIN
RAISERROR('Le dossier %s n''a pu être ouvert en lecture', 16, 1, @NOM_DOSSIER)
RETURN
END
-- Récupération des infos sur le dossier
EXECUTE @OLEHDL = sp_OAMethod @FOLDER_ID, 'Files', @FOLDERINFOS OUTPUT
IF @OLEHDL <> 0
BEGIN
RAISERROR('Les infos du dossier %s n''ont pu être récupéré', 16, 1, @NOM_DOSSIER)
RETURN
END
EXECUTE @OLEHDL = sp_OAGetProperty @FOLDERINFOS, 'Count', @NBFICHIERS OUTPUT
IF @OLEHDL <> 0
BEGIN
RAISERROR('Le nb de fichiers du dossier %s n''ont pu être récupéré', 16, 1, @NOM_DOSSIER)
RETURN
END
PRINT 'Nb fichiers : ' + CONVERT(VARCHAR(100), @NBFICHIERS)
-- cycle for all files
WHILE @NBFICHIERS >0
BEGIN
-- La propriété Item n'est pas reconnu :(
EXECUTE @OLEHDL = sp_OAGetProperty @FOLDERINFOS, 'Item', @FileItem OUT, @NBFICHIERS --@ItemSelect , @FileItem Out -- setting for file item
IF @OLEHDL <> 0
BEGIN
RAISERROR('Impossible de récupérer l''item', 16, 1)
RETURN
END
EXECUTE @OLEHDL = sp_OAGetProperty @FileItem, 'Name' , @FileName OUT -- getting file name
IF @OLEHDL <> 0
BEGIN
RAISERROR('Impossible de récupérer le name', 16, 1)
RETURN
END
IF @FileName <> ''
BEGIN
INSERT @Dir values (@FileName) -- saving filename into temporary table
END
SET @NBFICHIERS = @NBFICHIERS-1
SELECT @NBFICHIERS as po
END
cleanup:
EXECUTE sp_OADestroy @FILE_HANDLE
SET NOCOUNT OFF
SELECT * FROM @Dir
GO |
Partager