SP_executeSQL错误-组合语句时出错



我已经编写了这个光标

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:TempImages' + @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:TempImages1.jpg', SINGLE_BLOB ) AS x

消息102,级别15,状态1,第1行
"1."附近的语法不正确。

INSERT tempImage (imageData) 
    SELECT BulkColumn 
    FROM OPENROWSET(BULK 'C:TempImages10.jpg', SINGLE_BLOB ) AS x

消息102,级别15,状态1,第1行
"10."附近的语法不正确。

INSERT tempImage (imageData) 
    SELECT BulkColumn 
    FROM OPENROWSET(BULK 'C:TempImages11.jpg', SINGLE_BLOB ) AS x

消息102,级别15,状态1,第1行
"11."附近的语法不正确。

但如果我单独执行每一条语句,效果会很好。

现在很困惑。

参数语句应该看起来像:

EXEC SP_executeSQL @strSQLtoExecute, @ImageFileName=@ImageFileName

我想这会解决你的问题。

或者,完全省略参数,并更改执行字符串:

    SET @strSQLtoExecute = N'INSERT tempImage (imageData) SELECT BulkColumn FROM OPENROWSET(BULK ''C:TempImages'' + @ImageFileName + '''', SINGLE_BLOB ) AS x'

最新更新