2014-11-18 1 views
3

이 쿼리를 실행하려면 CONVERT 함수를 사용하여데이터 유형 varchar에서 varbinary 로의 암시 적 변환이 허용되지 않습니다. 내가 저장 프로 시저에서 다음 선택 문이

ALTER PROCEDURE [dbo].[Test] 
    --Params 
    @SolutionId INT 
    ,@APIKey varbinary(256) 
AS 
    SELECT 
     SK.SolutionID   
     ,SK.APIKey 
     ,SK.Enabled 
    FROM  
     dbo.SolutionKey SK 
    WHERE 
     SK.SolutionID = @SolutionId 
     AND SK.APIKey = @APIKey 
     AND Enabled = 1 

문제는 SK.APIKeyvarbinary 데이터 형식이지만 코드에서 저장 프로 시저가로 전달되는 것입니다 'sampledata'따라서 오류가 발생합니다.

데이터 유형 varchar에서 varbinary로 암시 적 변환이 허용되지 않습니다. CONVERT 함수를 사용하여이 쿼리를 실행합니다.

누군가이 문제를 해결할 수있는 방법을 알려주세요.

+4

오류는 'CONVERT'기능을 사용한다고 말합니다. 'CONVERT' 함수를 사용하려고 했습니까? (힌트 : 정답은'CONVERT' 함수를 사용하는 것입니다.)'CONVERT' 함수에 관해서는 알지만,'CONVERT' 함수 중 한가지 언급만으로는 충분하지 않습니다. 'CONVERT' 함수에 대해 더 많은 언급을 추가했습니다. :) – hvd

+0

@hvd, 하하, 나도 한번 더 변환을 반복하자. – radar

+0

글쎄, 그 일을 시도했지만 매개 변수에 잘못된 데이터 형식이있어서 작동하지 않았다. 나는 아래와 같이 varchar로 변경했다. 도움이 답변과 그 일을 .. 그래서 나는 변환기 (@ hvd, 레이더) 오늘 좋은 웃음을 가지고 바란다 – user505210

답변

11

이와 비슷한 기능이 작동 할 수 있습니다.

ALTER PROCEDURE [dbo].[Test] 
--Params 
@SolutionId INT 
,@APIKey varchar(256) 
AS 

SELECT 
      SK.SolutionID   
      ,SK.APIKey  
      ,SK.Enabled 
FROM dbo.SolutionKey SK 
where SK.SolutionID = @SolutionId 
    And SK.APIKey = CONVERT(VARBINARY(256), @APIKey, 1) 
    And Enabled = 1 
+0

고마워,이 – user505210

+0

@ user505210 아무 문제 없어! 내 대답을 받아 들일 자유롭게! – bowlturner

+0

감사합니다. 내 잘못은 아니지만 그냥 붙여 넣기 만하면된다. – toha

관련 문제