请参阅以下代码:
select top 1 * into #dbusers from dbusers
declare @tsql as varchar(1000)
set @tsql = 'select * from #dbusers'
exec (@tsql)
这正如我所料,即动态SQL返回一行。是否可以这样做:
declare @tsql as varchar(1000)
set @tsql = 'select top 1 * into #dbusers from dbusers'
exec (@tsql)
select * from #dbusers
我收到错误:
无效的对象名称'#dbusers'
有解决方法吗?
我意识到你可以使用动态SQL获得输出参数。但是,我也知道在使用存储过程时,您不能将表作为输出参数返回。
有可能这样做吗?是否有解决方法(创建物理表除外)?
答案 0 :(得分:2)
临时表仅在创建它们的会话中可用。使用Dynamic SQL,这意味着在运行Dynamic SQL后它不可用。您的选择是:
create table ##GlobalTemp
对于您的特定实例,您最好只执行一个select into
,它将根据所选数据生成您的表结构。