【问题标题】:SP_executeSQL error - Errors When Combining StatementsSP_executeSQL 错误 - 组合语句时出错
【发布时间】:2012-07-27 23:04:07
【问题描述】:

这个光标是我写的

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.' 附近的语法不正确。

但如果我单独执行每个语句,它就可以正常工作。

现在很困惑。

【问题讨论】:

  • 看起来它被路径中的反斜杠数字打乱了。奇怪。

标签: sql-server stored-procedures execute


【解决方案1】:

参数语句应如下所示:

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'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    • 2020-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多