急问:动态执行Sql语句与临时表?

存储过程中:
....
exec('select *,IDENTITY(int,1,1) as Num into #TempPhones from emp_mstr where '+@Parameter)
select XX,XX1,XX2 from #TempPhones
....
这样创建一个临时表以后我再想从临时表中取数据提示对象名#TempPhones无效,晕,如果我不是使用exec()执行sql语句的话就没有任何问题,WHY?
---------------------------------------------------------------

局部临时表属于创建他的连接,EXEC是一个的单独的连接.
可以这样:
....
exec('select *,IDENTITY(int,1,1) as Num into ##TempPhones from emp_mstr where '+@Parameter)
select XX,XX1,XX2 from ##TempPhones
....

OR:

....
exec('select *,IDENTITY(int,1,1) as Num into ##TempPhones from emp_mstr where '+@Parameter+ ' select XX,XX1,XX2 from #TempPhones')
....

---------------------------------------------------------------

先创建另一个临时表#TEMP2
select top 0 * into #temp2 from emp_mstr
alter table #temp2 add num int

insert into #temp2 exec('select *,IDENTITY(int,1,1) as Num into #TempPhones from emp_mstr where '+@Parameter)
select XX,XX1,XX2 from #Temp2

---------------------------------------------------------------

use pubs
exec
('SELECT *,
IDENTITY(smallint, 100, 1) AS job_num INTO #employees1
FROM employee
'+' select * from #employees1')

Published At
Categories with 数据库类
comments powered by Disqus