请问大家一下。先来一个简单的例子
表A
Declare @sql varchar(8000)
set @sql = 'select * from A'
exec (@sql)
执行之后如何使用这个查询结果集,也就是说如何把这个结果集放在一个临时表#temp里?
表A
Declare @sql varchar(8000)
set @sql = 'select * from A'
exec (@sql)
执行之后如何使用这个查询结果集,也就是说如何把这个结果集放在一个临时表#temp里?
select top 0 * into #t from A
set @sql = 'select * from A'
insert into #t exec (@sql)
Declare @sql varchar(8000)
set @sql = 'insert #temp select * from A'
exec (@sql) 这是一种方法
Declare @sql varchar(8000)
set @sql = 'insert #temp select * from A'
exec (@sql) 结合JJ的,优化一下.
Declare @sql varchar(8000)
set @sql = 'insert #temp select * from A'
exec (@sql)
declare @sql varchar(8000)
select top 0 * into #t from A
set @sql = 'select * from A'
insert into #t
exec (@sql)
'exec(''select * from sysobjects'')')
Declare @sql varchar(8000)
set @sql = 'select * into #temp from A'
exec (@sql)
在过程外将查不到#temp这个表的内容
要在SQL2005下才能执行.
Exec sp_serveroption 'servername','Data Access','True'
go
Select * INTO #tmpWho
From OpenQuery(servername,'Exec 存储过程')
2.
先建一个表#TempTable
INSERT INTO [#TempTable] Exec 存储过程
select * into #t from A where 1=2这样都可以复制表A的结构.
法一:select * into b from a where 1 <>1
法二:select top 0 * into b from a
Declare @sql nvarchar(4000)
set @sql = 'insert #1 select * from A'
exec (@sql)
在动态的语句中别创建一个临时表
比如
' select * into #1 from A'
这样确实插入进去了
可是你在外面select * from #1 提示 #1 不存在
--第 一种
select top 0 * into #temp from A
Declare @sql varchar(8000)
set @sql = 'insert #temp select * from A'
exec (@sql) --第二种
Declare @sql varchar(8000)
set @sql = 'select * into #temp from A'
exec (@sql)
例如
declare @strSql varchar(8000)
set @strSql = ...
exec(@strSql)才能获取到表,而表中的列时通过转置得到的,根据另一个表中数据可能改变其列数
怎么在存储过程中获取exec(@strSql)执行出来的表呢?