2012-07-27 49 views
1

我對執行情況的書面此光標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:\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.」附近語法不正確。

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

消息102,15級,狀態1,近'10號線1
語法不正確。「。

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

消息102,15級,狀態1,近11年行1
語法不正確。「。

但是,如果我單獨執行每個語句它工作正常。

現在感到困惑。

+0

它看起來就像是由反斜槓號路徑打亂。奇怪。 – Hogan 2012-07-27 14:34:46

回答

0

參數語句應該是這樣的:

EXEC SP_executeSQL @strSQLtoExecute, @[email protected] 

我認爲這將解決您的問題。

或者,離開了參數完全,並將執行字符串:

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

是不是第二個他在他的示例代碼 – Hogan 2012-07-27 14:33:37

+0

謝謝你是明星 – Aarif 2012-07-27 14:51:28