在存储过程SQL Server中将varchar值'Blue color'转换为数据类型int时转换失败

梅斯·库玛(Maes Kumar)

我正在尝试创建一个存储的Proc。但它使我感到“将varchar值'Blue color'转换为数据类型int时转换失败”错误。我不知道哪里有问题,请帮助我

ALTER PROCEDURE [dbo].[GetPerDiem] 

    @KeyWord varchar(10)


AS
BEGIN
set nocount on



 IF @KeyWord=1
 BEGIN
    Select City as 'Primary Destination',LocationDefined as [(County 2,3)],County,Jan,Meals as 'Meals & Inc. Exp.**'  from PerDiem
    END 
    ELSE IF @KeyWord=2
    BEGIN
    Select City as 'Primary Destination',LocationDefined as [(County 2,3)],County,Feb,Meals as 'Meals & Inc. Exp.**' from PerDiem
    END
    ELSE IF @KeyWord=3
    BEGIN
    Select City as 'Primary Destination',LocationDefined as [(County 2,3)],County,Mar,Meals as 'Meals & Inc. Exp.**' from PerDiem
    END
    ELSE IF @KeyWord=4
    BEGIN
    Select City as 'Primary Destination',LocationDefined as [(County 2,3)],County,Apr,Meals as 'Meals & Inc. Exp.**' from PerDiem
    END
    ELSE IF @KeyWord=5
    BEGIN
    Select City as 'Primary Destination',LocationDefined as [(County 2,3)],County,May,Meals as 'Meals & Inc. Exp.**' from PerDiem
    END
    ELSE IF @KeyWord=6
    BEGIN
    Select City as 'Primary Destination',LocationDefined as [(County 2,3)],County,Jun,Meals as 'Meals & Inc. Exp.**' from PerDiem
    END
    ELSE IF @KeyWord=7
    BEGIN
    Select City as 'Primary Destination',LocationDefined as [(County 2,3)],County,JUl,Meals as 'Meals & Inc. Exp.**' from PerDiem
    END
    ELSE IF @KeyWord=8
    BEGIN
    Select City as 'Primary Destination',LocationDefined as [(County 2,3)],County,Aug,Meals as 'Meals & Inc. Exp.**' from PerDiem
    END
    ELSE IF @KeyWord=9
    BEGIN
    Select City as 'Primary Destination',LocationDefined as [(County 2,3)],County,Sep,Meals as 'Meals & Inc. Exp.**' from PerDiem
    END
    ELSE IF @KeyWord=10
    BEGIN
    Select City as 'Primary Destination',LocationDefined as [(County 2,3)],County,Oct,Meals as 'Meals & Inc. Exp.**' from PerDiem
    END
    Else IF @KeyWord=11
    BEGIN
    Select City as 'Primary Destination',LocationDefined as [(County 2,3)],County,Nov,Meals as 'Meals & Inc. Exp.**' from PerDiem
    END
    ELSE IF @KeyWord=12    
    Select City as 'Primary Destination',LocationDefined as [(County 2,3)],County,Dec,Meals as 'Meals & Inc. Exp.**' from PerDiem
    ELSE
    Select City as 'Primary Destination',LocationDefined as [(County 2,3)],County,Oct,Nov,Dec ,Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Meals as 'Meals & Inc. Exp.**' from PerDiem 



    where [FiscalYEAR] =2015
    and [state] like '%'+@KeyWord+'%'
    or [City] like '%'+@KeyWord+'%'
    or [Zip] like '%'+@KeyWord+'%'
    or [County] like '%'+@KeyWord+'%'


END
普拉纳夫·辛格(Pranav Singh)

正如JamesZ在评论中说的那样,您已将参数'@KeyWord'声明为,VARCHAR(10)但在IF-Else中用整数对它的值进行了补偿,就像这样会使IF @KeyWord=1您出错。

总体而言,您的逻辑也不适用于SQL查询。我认为您希望根据您的参数使用不同的月份,因此存储的proc可能类似于:

ALTER PROCEDURE [dbo].[GetPerDiem] 

    @KeyWord INT


AS
BEGIN
set nocount on



 IF @KeyWord=1
 BEGIN
    Select City as 'Primary Destination',
         LocationDefined as [(County 2,3)],
         County,
         Month=CASE 
            WHEN @KeyWord=1 THEN 'Jan'
            WHEN @KeyWord=2 THEN 'Feb'
            WHEN @KeyWord=3 THEN 'Mar'
            WHEN @KeyWord=4 THEN 'Apr'
            WHEN @KeyWord=5 THEN 'May'
            WHEN @KeyWord=6 THEN 'Jun'
            WHEN @KeyWord=7 THEN 'Jul'
            WHEN @KeyWord=8 THEN 'Aug'
            WHEN @KeyWord=9 THEN 'Sep'
            WHEN @KeyWord=10 THEN 'Oct'
            WHEN @KeyWord=11 THEN 'Nov'
            WHEN @KeyWord=12 THEN 'Dec'
            ELSE 'Oct,Nov,Dec ,Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep'
         END
         Meals as 'Meals & Inc. Exp.**'  
   from PerDiem        
    where [FiscalYEAR] =2015
     and [state] like '%'+@KeyWord+'%'
      or [City] like '%'+@KeyWord+'%'
      or [Zip] like '%'+@KeyWord+'%'
      or [County] like '%'+@KeyWord+'%'


END

或者

最好有一个Varchar参数,@month Varchar(100)并使用if else在select循环外分配其相应的month值,并在select中使用该一次性计算的变量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在SQL Server中将varchar值转换为数据类型int时转换失败

SQL-将Varchar值转换为数据类型Int时转换失败

将varchar值'1,3'转换为SQL Server中的数据类型int时转换失败

将varchar转换为int数据类型时转换失败:SQL

SQL:将nvarchar值“ XXX”转换为数据类型int时转换失败

在SQL Server中将varchar数据类型转换为带存储过程错误的小数

SQL Server转换错误:将nvarchar值“ XXX”转换为数据类型int时转换失败

将 nvarchar 值“ ”转换为数据类型 int 时,SQL Server 数据库错误转换失败

将varchar值转换为数值数据类型时,SQL转换失败

在SQL Server中将位数据类型转换为VarChar

在存储过程中将数据类型varchar转换为bigint时出错

SQL错误:将varchar值'PJOI015'转换为数据类型位时转换失败

如何获取错误“将数据类型nvarchar转换为int时出错”。通过尝试在SQL Server存储过程中的catch语句?

存储过程-将数据类型varchar转换为float时出错

存储过程-将数据类型varchar转换为数值时出错

在SQL中将表达式转换为数据类型int时出错

PHP PDO unixODBC FreeTDS SQL Server在存储过程中“将数据类型varchar(max)转换为datetime”

将varchar值'@id'转换为数据类型int时转换失败

将varchar值'U'转换为数据类型int时转换失败

将varchar值'xxx'转换为数据类型int时转换失败

将varchar值'where name_id in('转换为数据类型int时,转换失败

将varchar值'29 / 09/2016'转换为数据类型int时转换失败

将varchar值'_1'转换为数据类型int时转换失败

将varchar值'is_special_taken'转换为数据类型int时转换失败

将varchar值'Id'转换为数据类型int时转换失败

将varchar值'@uye_yasi'转换为数据类型int时转换失败

将字符串的 varchar 值转换为数据类型 int 时转换失败

将varchar值'Oct'转换为数据类型int时转换失败

将varchar值'CA3'转换为数据类型int时转换失败