【问题标题】:Implicit conversion from data type varchar to varbinary is not allowed. Use the CONVERT function to run this query不允许从数据类型 varchar 到 varbinary 的隐式转换。使用 CONVERT 函数运行此查询
【发布时间】:2018-08-25 14:30:24
【问题描述】:

我有以下来自存储过程的选择语句:

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

谁能告诉我如何解决这个问题?

【问题讨论】:

  • @hvd,哈哈,让我再重复一次转换
  • 好吧,我试过这样做,但参数的数据类型错误,所以它不起作用..我将它更改为 varchar,如下面有用的答案所示,并且有效.. 所以我希望CONVERTERS(@hvd,RADAR) 今天笑得很开心

标签: sql sql-server-2008


【解决方案1】:

这样的事情可能会奏效。

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

【讨论】:

  • @user505210 没问题!欢迎接受我的回答!
  • 谢谢。我的错不小心......只是复制粘贴。
猜你喜欢
  • 1970-01-01
  • 2018-06-07
  • 2018-04-30
  • 1970-01-01
  • 1970-01-01
  • 2012-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多