SQL Server:将varchar值“K”转换为数据类型为int的列时出现语法错误

SQL Server:将varchar值“K”转换为数据类型为int的列时出现语法错误,sql,sql-server,stored-procedures,int,varchar,Sql,Sql Server,Stored Procedures,Int,Varchar,我们有一个存储过程,它将查询一个表并将该表中的3列插入另一个表中。这3列是一个varchar、一个int和另一个varchar。运行存储过程时,我得到错误: Msg 245,16级,状态1,程序选择\u hcfa1500\u EMDEONCBBS\u至\u构建,第30行 将varchar值“K”转换为数据类型为int的列时出现语法错误 代码: 此代码在第30行insert into语句中有错误 我只是有点不知所措,因为每一列都被插入到它的同一个变量中,varchar to varchar和int

我们有一个存储过程,它将查询一个表并将该表中的3列插入另一个表中。这3列是一个varchar、一个int和另一个varchar。运行存储过程时,我得到错误:

Msg 245,16级,状态1,程序选择\u hcfa1500\u EMDEONCBBS\u至\u构建,第30行 将varchar值“K”转换为数据类型为int的列时出现语法错误

代码:

此代码在第30行insert into语句中有错误


我只是有点不知所措,因为每一列都被插入到它的同一个变量中,varchar to varchar和int to int。即使查看所有数据,我在任何行或列中都没有看到任何“K”,这只会导致更多的混乱。我们尝试用数据库重新启动服务器,但没有成功。有人知道为什么存储过程会在实际上不存在的列中找到这样的内容吗?

视图为icd_指示符返回的值是什么?hcfa1550_view_837是否如其名称所示,实际上是表还是视图?您可以从hcfa1500\u视图\u 837中选择不同的icd\u指示器吗?hcfa1500\u指针\u中是否只有三列指向\u构建???尝试在insert语句中显式地提到列名。我认为视图返回的值是一个varchar,尽管我不太熟悉这个视图,因为它是多年前建立的。hcfa1500_视图_837是一个视图,我运行了您建议的查询并返回了一个空白、一个K、0和9,这会让我相信这就是问题所在,尽管我不记得ICD指示器是一个整数。是的,“hcfa1500_pointer_to_build”中只有3列。我现在看到icd_指示符在过程中被声明为int,因此我认为用K删除此条目应该可以解决问题。
declare @prov_acct_no varchar(10)
declare @icd_indicator int

select top 1 
    @prov_acct_no = left(prov_acct_no, 6), 
    @icd_indicator = icd_indicator 
from 
    hcfa1500_view_837
where 
    (map_names_element)  = 'EMDEONBCBS' 
order by 
    claim_no

INSERT INTO hcfa1500_pointer_to_build
    SELECT     
        prov_acct_no, claim_no, map_names_element
    FROM         
        hcfa1500_view_837
    WHERE     
        (map_names_element = 'EMDEONBCBS') 
        AND left(prov_acct_no, 6) = @prov_acct_no 
        AND icd_indicator = @icd_indicator