存储过程里能执行SQL字符串,并把结果集插入到临时表吗

有你_才有梦想 2007-11-10 12:07:15
问题如题
举例:
declare @sql varchar(1000)
set @sql='(select * from pro) temp'

我想实现类似的功能
set @str=' select *
into #aa
from ( ' + @sql + ')'
exec(@str)

但是提示出错啊,这个该怎么写,我的@sql实际上是传入参数


...全文
409 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
谢谢各位兄弟,可以了
中国风 2007-11-10
  • 打赏
  • 举报
回复
如果要用#a
只有在执行之前建好;
create table #a(col1.....)

insert #a exec(@s)
中国风 2007-11-10
  • 打赏
  • 举报
回复


--以下测试
declare @s nvarchar(1000),@s2 nvarchar(1000)
set @s='(select top 5 ID from sysobjects) t'
set @s2='select * into ##a from '+@s
exec (@s2)
select * from ##a

ID
-----------
1
2
3
4
6

(所影响的行数为 5 行)


--drop table ##a
中国风 2007-11-10
  • 打赏
  • 举报
回复
declare @sql varchar(1000)
set @sql= '(select * from pro) temp '

set @str= ' select *
into ##aa
from ' + @sql
exec(@str)
select * from ##aa
改为##a全局临时表,多了()括号
  • 打赏
  • 举报
回复
这样不行的,因为#aa是事先不存在的,这个语句只能是插入操作
skyboy0720 2007-11-10
  • 打赏
  • 举报
回复
set @str= ' select *
from ( ' + @sql + ') '
insert into #aa exec(@str)

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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