Netsis'de SQL İle Stok Kartına Resim Kayıt Etme

Merhabalar

Netsis'de bazen stok kartlarına toplu resim eklemek gerekiyor. Aşağıdaki sql sorgusu ile bir klasördeki resimlerin stok kartına nasıl kayıt edileceği gösterilmektedir.

CREATE TABLE #TMP(STRFILENAME VARCHAR(100));
INSERT INTO #TMP EXEC xp_cmdshell 'DIR /B C:\Nevaa\StokResim\';

DECLARE @FILENAME VARCHAR(1000)

WHILE (SELECT COUNT(*) FROM  #TMP WHERE STRFILENAME IS NOT NULL) > 0
BEGIN

    SELECT TOP 1 @FILENAME = STRFILENAME FROM #tmp

	DECLARE @FILEPATH NVARCHAR(500)
	SET @FILEPATH = 'C:\Nevaa\StokResim\'+@FILENAME

	--SELECT @FILEPATH

	DECLARE @SQL NVARCHAR(MAX)
	DECLARE @FILESTREAM VARBINARY(MAX)
    
	SET @SQL = N'SELECT @FILESTREAM1 = CAST(BULKCOLOUMN AS VARBINARY(MAX))
                from OPENROWSET(BULK ''' + @filePath + ''',
                SINGLE_BLOB) ROW_SET'

	EXEC sp_executesql @SQL, N'@FILESTREAM1 VARBINARY(MAX) OUTPUT',@FILESTREAM1 =@FILESTREAM OUTPUT

	--ASAGIDAKI DELETE COMMENT'I KALDIRILIRSA ILGILI STOK KODUNA AIT DAHA ONCEDEN KAYIT EDILMIS RESIM VARSA SILER
 	--DELETE FROM TBLEVRAK WHERE KOD=@FILENAME AND TABLOTIPI=1 AND EVRAKTIPI=0        

	INSERT INTO TBLEVRAK (TABLOTIPI, KOD, EVRAKTIPI, ACIKLAMA,BILGIBOYUT,BILGI,KAYITTAR,KULID)
	SELECT 1,LEFT(@FILENAME,13),0,LEFT(@FILENAME,13),DATALENGTH(@FILESTREAM), @FILESTREAM, GETDATE(),1

    DELETE FROM #TMP WHERE STRFILENAME = @FILENAME

END
DROP TABLE #TMP

Yorumlar