2014-11-18 1 views
3

У меня есть ниже оператор выбора из хранимой процедуры:Неявное преобразование из типа данных varchar в varbinary не допускается. Используйте функцию CONVERT для выполнения данного запроса

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.APIKey является varbinary тип данных, но в хранимой процедуре из кода он будет передан как 'sampledata', и поэтому я получаю ошибку

Неявное преобразование из типа данных varchar в varbinary не допускается. Используйте функцию CONVERT для запуска этого запроса.

Может кто-нибудь рассказать мне, как я могу это разрешить?

+4

Ошибка говорит, что используется функция 'CONVERT'. Вы пытались использовать функцию 'CONVERT'? (Подсказка: правильный ответ заключается в использовании функции 'CONVERT'.) Я знаю, что я продолжаю работать над функцией' CONVERT', но так как одного упоминания этой функции 'CONVERT', по-видимому, недостаточно для вас, я Добавляем еще несколько упоминаний о функции 'CONVERT'. :) – hvd

+0

@hvd, ха-ха, позвольте мне еще раз повторить Convert еще раз – radar

+0

Ну, я пробовал делать это, но имел неправильный тип данных для параметра, чтобы он не работал. Я изменил его на varchar, как показано ниже полезный ответ, и это сработало .. поэтому я надеюсь, что ПРЕОБРАЗОВАТЕЛИ (@ hvd, RADAR) сегодня получили хороший отклик – 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

Смежные вопросы

 Смежные вопросы