SQL 已经将列名从临时表中查询出来,怎么将它一一罗列出来呢,请各位大虾指点!

selectnamefromtempdb.dbo.syscolumnswhereid=object_id(N'tempdb.dbo.##t')已经将列名取出想要将临时表t... select name from tempdb.dbo.syscolumns where id=object_id(N'tempdb.dbo.##t')
已经将列名取出

想要将临时表t中的数据插入到表A中
insert into a
select * from ##t b
where not exists (select 1 from a where a.SN=b.SN)
由于临时表中的列名不确定,所以我想先把列名取出来,然后罗列开来,来取代*,请问大虾如何才能实现~~ 一点小小的财富算是我的谢意啦!
展开
 我来答
qudedong28
2013-05-24 · 超过27用户采纳过TA的回答
知道答主
回答量:95
采纳率:0%
帮助的人:73.1万
展开全部
自定一个方法,返回值为罗列的列的字符串,
方法体内,查询T表,遍历结果集,将每一列一一用字符串拼接起来
最终将拼接后的字符串返回。
外层调用方法后,利用动态SQL来执行insert操作。
追问
是一列一列取出来吗,我是写在存储过程里面的,可以用rowid,循环一行行取出来吗?
追答
如果你是写在存储过程里面,不需要再写个方法,直接在过程体内,通过游标来取,然后遍历游标来实现列字符串的拼接即可。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
WHITE_WIN
2013-05-24 · TA获得超过6111个赞
知道大有可为答主
回答量:3759
采纳率:50%
帮助的人:1920万
展开全部
使用动态SQL语句:
declare @name Nvarchar(100),@sqlStr nvarchar(1000)
select @name=isnull(@name+N',','')+name from tempdb.dbo.syscolumns where id=object_id(N'tempdb..##t')
set @sqlStr=N'insert into a SELECT '+@NAME+' FROM ##t b'

EXEC(@SQLSTR)
追问
谢谢大虾,我的问题解决了,虽然有点看不懂,我慢慢研究下,哈哈,选你为满意答案啦,再次谢谢~
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yangliwei100
2013-05-24 · TA获得超过2258个赞
知道小有建树答主
回答量:2216
采纳率:50%
帮助的人:726万
展开全部
create table ##t(colmns)
临时表直接使用创建的而不用insert into生成的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式