2013-05-13 2 views
0

다음은 스택 오버플로에서 발견 한 동적 SQL 솔루션에 대한 질문입니다. 이전 예제에서 사용한 코드 모델을 사용하고 싶습니다. 문제는 다음과 같은 오류가 나타납니다. 메시지 4104, 수준 16, 상태 1, 줄 1 다중 부분 식별자 "ABC123.jpg"을 바인딩 할 수 없으며 이미지 이름이 실제로로드되는 이유를 이해하지 못합니다. . 나는 나의 지혜 끝에있다. 나는이 솔루션을 작동시키는 데 아주 가깝지만이 문제를 넘어서는 것은 아닐 수 있다고 생각합니다.SQL Server에서 이미지 가져 오기 : 수행하십시오.

아래의 예제 코드는 찾아주세요 :

declare AssetCursor cursor fast_forward for 
    select Image_File_Name 
     from Images 

declare @sql nvarchar(4000) 
declare @Image_File_Name varchar(50) 

open AssetCursor  

while (1=1) begin 
    fetch next from AssetCursor into @Image_File_Name 

    if @@FETCH_STATUS<>0 break 

    set @sql = N'UPDATE dbo.Images 
        SET Doc_Image = 
         (SELECT * FROM 
           OPENROWSET(BULK N''C:\MyImages\' + cast(@Image_File_Name as varchar(50)) + N'.JPG'', SINGLE_BLOB) AS img) 
           WHERE Image_File_Name = ' + cast(@Image_File_Name as varchar(50)) 

    exec(@sql) 
end /* while */ 

close AssetCursor 
deallocate AssetCursor 

답변

0

시도

Image_File_Name = ''(VARCHAR로 @Image_File_Name (50)) + 캐스트 + '

곳'을 '이'입니다

두 개의 작은 따옴표가 아니라 두 개의 작은 따옴표. 그때 이렇게하면 그 안에 리터럴 문자열이 apostrophies의 또 다른 레이어를 필요 있도록 동적 SQL을 구축하고

+0

내가 얻을 : 메시지 105, 수준 15, 상태 1, 줄 18 닫히지 않은 인용 부호 문자열 후 IMG AS '.JPG'SINGLE_BLOB)) Image_File_Name = '+ VARCHAR 같은 캐스트 (@Image_File_Name (50))' 간부 (@Sql) 단부/* 동안 */ 근접 AssetCursor 할당 해제 AssetCursor ' . 메시지 102, 수준 15, 상태 1, 줄 18 '.JPG', SINGLE_BLOB) AS 근처의 구문이 올바르지 않습니다. img) WHERE Image_File_Name = '+ cast (@Image_File_Name as varchar (50))' '. – user2379163

관련 문제