Tb TbA
uid   bigint
uname nvarcharTb TbC 
cid   nvarchar
cname nvarchar从A取数据 插入到C
web页取的id(checkbox)列表,并调整为字符串 strids = "1,2,3,4,5,6,7",传入存储过程存储过程主要代码: 
...
@ids nvarchar(2550)(input参数)
...
INSERT into TbC 
   (cid,cname) 
SELECT 
   CONVERT(nvarchar(255),uid),uname 
FROM TbA 
where uid IN (@ids)提示不能将nvarchar 转为 bigint 错误处:where uid IN (@ids)但是我用另一张表(ID是字符类型的)以同样方式插入到C,是可以的,请问是什么原因?请高手们指点了!多谢多谢!sql存储过程

解决方案 »

  1.   

    declare @sql nvarchar(max)
    set @sql=
    'INSERT into TbC 
       (cid,cname) 
    SELECT 
       CONVERT(nvarchar(255),uid),uname 
    FROM TbA 
    where uid IN ('+@ids+')'
    exec(@sql)
      

  2.   

    try this,-- input参数
    @ids nvarchar(2550)
    .
    .
    .
    declare @tsql varchar(6000)select @tsql='insert into TbC(cid,cname) '
                +' select convert(nvarchar(255),uid),uname '
                +' from TbA ' 
                +' where uid in('+@ids+') 'exec(@tsql)
      

  3.   

    你的想法是好的,但當前SQL不支持你這種想法,只有等待SQL升級了......