我在硬盘上的特定硬盘中有一些照片,这些照片都有*.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
因为我收到错误:
'+'
附近的语法不正确
答案 0 :(得分: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