1

私はこのカーソルを書きました

DECLARE IMGPATH CURSOR FAST_FORWARD FOR
    select ImageFileName from tempImageFiles
OPEN IMGPATH

FETCH NEXT FROM IMGPATH INTO @ImageFileName
WHILE @@FETCH_STATUS = 0
 BEGIN
    --SELECT @ImageFileName = LEFT(@ImageFileName, (6-4))
        SET @strSQLtoExecute = N'INSERT tempImage (imageData) SELECT BulkColumn FROM OPENROWSET(BULK ''C:\Temp\Images\' + @ImageFileName + ''', SINGLE_BLOB ) AS x'
        PRINT @strSQLtoExecute 
        EXEC SP_executeSQL @strSQLtoExecute, @ImageFileName

FETCH NEXT FROM IMGPATH INTO @ImageFileName
 END

CLOSE IMGPATH
DEALLOCATE IMGPATH

実行時に次のエラーが表示されます

INSERT tempImage (imageData) 
    SELECT BulkColumn 
    FROM OPENROWSET(BULK 'C:\Temp\Images\1.jpg', SINGLE_BLOB ) AS x

メッセージ 102、レベル 15、状態 1、行 1
'1.' 付近の構文が正しくありません。

INSERT tempImage (imageData) 
    SELECT BulkColumn 
    FROM OPENROWSET(BULK 'C:\Temp\Images\10.jpg', SINGLE_BLOB ) AS x

メッセージ 102、レベル 15、状態 1、行 1
'10.' 付近の構文が正しくありません。

INSERT tempImage (imageData) 
    SELECT BulkColumn 
    FROM OPENROWSET(BULK 'C:\Temp\Images\11.jpg', SINGLE_BLOB ) AS x

メッセージ 102、レベル 15、状態 1、行 1
'11.' 付近の構文が正しくありません。

しかし、各ステートメントを個別に実行すると、正常に機能します。

今混乱しています。

4

1 に答える 1

0

パラメータ ステートメントは次のようになります。

EXEC SP_executeSQL @strSQLtoExecute, @ImageFileName=@ImageFileName

これで問題が解決すると思います。

または、パラメーターを完全に省略して、実行文字列を変更します。

    SET @strSQLtoExecute = N'INSERT tempImage (imageData) SELECT BulkColumn FROM OPENROWSET(BULK ''C:\Temp\Images\'' + @ImageFileName + '''', SINGLE_BLOB ) AS x'
于 2012-07-27T14:27:04.613 に答える