2013-05-07 2 views
1

나는 동적 SQL 문제에 붙어있다. varbinary (byte []) 데이터를 내 테이블에 저장할 수 있어야합니다. 여기 동적 SQL 삽입 varbinary 데이터를 변환

는 보여 내 문제 샘플 코드입니다 :

ALTER PROCEDURE ins_photo 
@schema VARCHAR(63), @name VARCHAR(50), @data VARBINARY(MAX) 
AS 

PRINT @data; 

EXEC (' 

PRINT '''[email protected]+'''; 

DECLARE @plswork VARBINARY(MAX) = CAST('''[email protected]+''' AS VARBINARY(MAX)) 

PRINT @plswork; 

INSERT INTO '[email protected]+'.Tester 
(name, photo) 
VALUES 
(
'''[email protected]+''', 
@plswork 
) 
') 

그리고 여기에 출력됩니다 : 당신이 변환에 알 수 있습니다으로

0xFFD8FFE000104A4649460001010000 
?????A 
0x3F3F3F3F3F410100 

(1 row(s) affected) 

초기 바이너리 데이터와 "변환" 다르다. 따라서 이미지를 표시하기 위해 이진 데이터를 검색 할 때 ... 아무 것도 밝혀지지 않았다. :)

나는 정말로 도움이나 작품을 고맙게 생각하지만, 것은이 usp가 스키마에 의존하는 다른 테이블을 호출 할 필요가 있다는 것이다.

은 내가 NVARCHAR (최대)로하고, 내가이 생각 wouldve()? 클라이언트 측 사용 ToBase64String에 이미지를 저장할 수 없습니다 (따라서 왜 내가 동적 SQL을 사용하고하는) 나쁜 솔루션입니다하지만 너무 확실하지

미리 감사드립니다. 마르코

답변

2

나는 왜이 문제에 직면하고 있는지 잘 모르겠습니다. 그러나 @data를 동적 SQL 문자열에 연결하는 대신 매개 변수로 전달하십시오. 아래 언급 된 예를 참조하십시오.

DECLARE @Color varchar(16) = 'Blue', @LastProduct varchar(64) 
SET @SQL =  N'SELECT @pLastProduct = max(Name) 
        FROM AdventureWorks2008.Production.Product 
        WHERE Color = @pColor' 
SET @ParmDefinition = N'@pColor varchar(16), 
         @pLastProduct varchar(64) OUTPUT' 
EXECUTE sp_executeSQL 
      @SQL, 
      @ParmDefinition, 
      @pColor = @Color, 
      @pLastProduct OUTPUT 
+0

이 근무 , 대단히 감사합니다 :)이 작은 (아주 작은) 이미지와 함께 작동합니까 응답에 대한 감사 – EaziLuizi

0

EXEC 쿼리 문자열에 VARBINARY 대신 VARCHAR 변수를 보내 봅니다.

DECLARE @dataCHAR VARCHAR(MAX); 
SET @dataCHAR = @data; 

그래서 절차는 모양을 추가

ALTER PROCEDURE ins_photo 
@schema VARCHAR(63), @name VARCHAR(50), @data VARBINARY(MAX) 
AS 

PRINT @data; 

DECLARE @dataCHAR VARCHAR(MAX); 
SET @dataCHAR = @data; 

EXEC (' 

PRINT '''[email protected]+'''; 

DECLARE @plswork VARBINARY(MAX) = CAST('''[email protected]+''' AS VARBINARY(MAX)) 

PRINT @plswork; 

INSERT INTO '[email protected]+'.Tester 
(name, photo) 
VALUES 
(
'''[email protected]+''', 
@plswork 
) 
') 
+0

감사합니다, 큰 이미지가 실패합니다 ... hmmmm – EaziLuizi

+0

문제에 대해 귀하의 솔루션이 정확했기 때문에 큰 이미지를 사용했지만 구현에 대해 매우 고맙습니다. 그래서 다른 답변은 "더"정확합니다 .. 다시 한번 감사드립니다. – EaziLuizi

관련 문제