不允许从数据类型varchar到varbinary的隐式转换。使用CONVERT函数运行此查询

时间:2014-11-18 18:51:42

标签: sql sql-server-2008

我从存储过程中得到以下select语句:

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函数运行此查询。

有人可以告诉我如何解决这个问题?

1 个答案:

答案 0 :(得分:24)

这样的事可能有用。

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