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 に答える