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)
由于临时表中的列名不确定,所以我想先把列名取出来,然后罗列开来,来取代*,请问大虾如何才能实现~~ 一点小小的财富算是我的谢意啦! 展开
已经将列名取出
想要将临时表t中的数据插入到表A中
insert into a
select * from ##t b
where not exists (select 1 from a where a.SN=b.SN)
由于临时表中的列名不确定,所以我想先把列名取出来,然后罗列开来,来取代*,请问大虾如何才能实现~~ 一点小小的财富算是我的谢意啦! 展开
3个回答
展开全部
自定一个方法,返回值为罗列的列的字符串,
方法体内,查询T表,遍历结果集,将每一列一一用字符串拼接起来
最终将拼接后的字符串返回。
外层调用方法后,利用动态SQL来执行insert操作。
方法体内,查询T表,遍历结果集,将每一列一一用字符串拼接起来
最终将拼接后的字符串返回。
外层调用方法后,利用动态SQL来执行insert操作。
追问
是一列一列取出来吗,我是写在存储过程里面的,可以用rowid,循环一行行取出来吗?
追答
如果你是写在存储过程里面,不需要再写个方法,直接在过程体内,通过游标来取,然后遍历游标来实现列字符串的拼接即可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用动态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)
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)
追问
谢谢大虾,我的问题解决了,虽然有点看不懂,我慢慢研究下,哈哈,选你为满意答案啦,再次谢谢~
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
create table ##t(colmns)
临时表直接使用创建的而不用insert into生成的。
临时表直接使用创建的而不用insert into生成的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询