2016-12-15 3 views
0
alter Procedure sp_range_chkbox  
    @Price int,   
    @Price1 int,  
    @chkValue varchar(max) 
as   
begin   
    IF (@chkValue > 0)   
    begin   
     select 
      ProductID, ProductName, ProductImage, ProductPrice 
     from 
      tblProddetails 
     where 
      (ProductPrice between @Price and @Price1) 
      and (CHARINDEX(',' + CAST(Categoryid as VARCHAR(8000)) + ',', ',' + @chkvalue + ',') > 0)  
    end   
    else   
    begin   
     select 
      ProductID, ProductName, ProductImage, ProductPrice 
     from 
      tblProddetails 
     where 
      ProductPrice between @Price and @Price1   
    end   
end 

Здесь я использую @chkvalue, как Varchar(max)Как добавить несколько значений в SQL с помощью оператора запятая

Но код выдает ошибку:

Conversion failed when converting the varchar value '3,1' to data type int

+0

Я думаю, что вы хотите, чтобы проверить, если 'LEN (@chkValue)> 0' –

+0

@WEI_DBA (LEN (@chkValue)> 0) hbow использовать это в If Condution –

+0

В инструкции If замените '@ chkValue' на' LEN (@chkValue) ' –

ответ

0

Изменение IF (@chkValue > 0) в IF(LEN(@chkValue)>0)

alter Procedure sp_range_chkbox  
    @Price int,   
    @Price1 int,  
    @chkValue varchar(max) 
as   
begin   
    IF(LEN(@chkValue)>0)  
    begin   
     select 
      ProductID, ProductName, ProductImage, ProductPrice 
     from 
      tblProddetails 
     where 
      (ProductPrice between @Price and @Price1) 
      and (CHARINDEX(',' + CAST(Categoryid as VARCHAR(8000)) + ',', ',' + @chkvalue + ',') > 0)  
    end   
    else   
    begin   
     select 
      ProductID, ProductName, ProductImage, ProductPrice 
     from 
      tblProddetails 
     where 
      ProductPrice between @Price and @Price1   
    end   
end 
0

Эта проверка является проблема ..

IF (@chkValue > 0) 

По понятным причинам SQL-сервер пытается преобразовать @chkValue в целое число, которое первоначально было типа varchar(max). Значение, которое вы передали в @chkValue, которое должно быть '3,1', просмотрев ваше сообщение об ошибке, не может быть преобразовано в Integer.