求教!关于存储过程的变量

theknight11 2013-07-02 05:33:40
Tb TbA
uid bigint
uname nvarchar

Tb 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,是可以的,请问是什么原因?

请高手们指点了!多谢多谢!
...全文
180 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzw_0736 2013-07-02
  • 打赏
  • 举报
回复
你的想法是好的,但當前SQL不支持你這種想法,只有等待SQL升級了......
theknight11 2013-07-02
  • 打赏
  • 举报
回复
只能用拼接字符串来做?我就是懒的去拼,只想把数据丢进变量就收工了...高手们,指点俺!!!
唐诗三百首 2013-07-02
  • 打赏
  • 举报
回复
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)
lzw_0736 2013-07-02
  • 打赏
  • 举报
回复
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)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧