2012-06-19 109 views
1

我在硬盤上的特定驅動器中有一些照片,這些照片都有*.jpg擴展名和數字名稱。從硬盤插入圖像到SQL Server的while循環

例如:1.jpg , 2.jpg , 5.jpg , ...

我想這些照片插入到表這個模式:

CREATE TABLE Employees 
(
    Id int NOT NULL, 
    Photo varbinary(max)NULL 
) 

在第一步,我不知道有什麼不對的:

DECLARE @i INT 
SET @i = 1 
WHILE (@i <=100) 
    BEGIN 
     INSERT INTO Employees (Id, Photo) 
      SELECT @i, BulkColumn 
      FROM Openrowset(Bulk 'C:\Pictures\'+convert(nvarchar(5),@i)+'.jpg', Single_Blob) as EmployeePicture 
      SET @i = @i + 1 
    END 
GO 

因爲我得到一個錯誤:

Incorrect syntax near '+'

回答

1

OPENROWSET(BULK ...)的'data_file'參數必須是帶引號的字符串,它不能是變量或表達式。我擔心你必須使用動態sql。

DECLARE @i INT 
SET @i = 1 
WHILE (@i <=100) 
BEGIN 
    DECLARE @SQL VARCHAR(MAX) 
    SELECT @SQL = 'INSERT INTO Employees (Id, Photo) 
     SELECT ' + convert(nvarchar(5), @i) + ', BulkColumn FROM OpenRowSet (Bulk ''C:\Pictures\' + 
     convert(nvarchar(5), @i) + '.jpg'', Single_Blob) as EmployeePicture' 

    exec (@SQL) 

    SET @i = @i + 1 
END 
GO