1

我在硬盘上的特定驱动器中有一些照片,这些照片都有*.jpg扩展名和数字名称。

例如 :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

因为我得到一个错误:

'+' 附近的语法不正确

4

1 回答 1

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
于 2012-06-19T20:40:23.390 回答