2016-02-27 18 views
5

SQL yoluyla dosya eklemeye çalışıyorum. Aşağıdaki sorguyu kullanıyorum.Dosyayı saklı yordamını kullanarak ön uçsuz SQL Server'a ekleyin

INSERT INTO [dbo].[Attachments] (FileName, FileBinary) 
    SELECT 
     'non-date-in-sql-server-column', 
     BulkColumn 
    FROM 
     OPENROWSET(Bulk 'C:\Users\Pictures\Picture.JPG', SINGLE_BLOB) AS BLOB 

Çok çalışıyor.

Dinamik yol alan yordamı yazmak istiyorum. Onun eklenti Filebinary alamama hatası veriyor. Veri türü varbinary. Yapmanın en iyi yolu nedir?

Takip ettim ama düzgün bir şekilde ikili değer almıyor.

DECLARE @SQLString NVARCHAR(MAX) 

SET @SQLString = 'SELECT ' + '''' [email protected] +'''' + ' AS Name,' + 'FileBinary 

FROM OPENROWSET(BULK N''' + @ImagePath + ''',SINGLE_BLOB) AS FileBinary(FileBinary);' 

Insert Into Attachments (ApplicantID, FileName, FileBinary) 
Values (@ApplicantID, @FileName, Convert(varbinary(max), @SQLString)) 

cevap

2

Ekle ifadesini dinamik bir sorgunun içine yerleştirin ve yürütün.

Artık sizin @SQLString, FileBinary değerinizde dinamik olarak çerçevelenmiş dizeye sahip olacaktır.

DECLARE @SQLString NVARCHAR(MAX), 
     @Filename VARCHAR(500), -- Pass file name here 
     @ApplicantID VARCHAR(500) --Pass Application ID here 

SET @SQLString = ' 
    Insert Into Attachments 
    (
      ApplicantID, 
      FileName, 
      FileBinary 
    ) 
    SELECT @ApplicantID,@Filename,FileBinary 
    FROM OPENROWSET(BULK N''' + @ImagePath 
       + ''',SINGLE_BLOB) AS FileBinary(FileBinary);' 

EXEC Sp_executesql 
    @SQLString, 
    N'@Filename varchar(500),@ApplicantID varchar(500)', 
    @Filename [email protected], 
    @[email protected] 
değerlerini almak için yürütmeniz gerekir
İlgili konular