1,如果我把T1創建為臨時表,那在存儲過程執行完畢后,其中信息也隨之丟失.其他地方肯定是獲取不了信息的~在存储过程里面将结果集返回: select * from #臨時表 2.如果創建為物理表,又存在多用戶操作同一T1的危險。显然不能用物理表。
存储过程外边再建一个臨時表,接收结果集:create table #臨時表(...) insert into #臨時表 exec 存储过程
--创建临时表 create table #t ( myid int not null, mycd varchar(20) null ) --删除临时表declare @tmpTable nvarchar(300) IF EXISTS(SELECT name FROM tempdb..sysobjects WHERE name like '#t'+'%' AND type = 'U') begin set @tmpTable='' set @tmpTable=(SELECT name FROM tempdb..sysobjects WHERE name like '#t'+'%' AND type = 'U') exec('drop table '+@tmpTable) end GO --说明 /* 临时表的命名规则: #t 表示本地变量 ##t 表示全局变量 */
select * from #臨時表
2.如果創建為物理表,又存在多用戶操作同一T1的危險。显然不能用物理表。
insert into #臨時表 exec 存储过程
create table #t (
myid int not null,
mycd varchar(20) null
)
--删除临时表declare @tmpTable nvarchar(300)
IF EXISTS(SELECT name
FROM tempdb..sysobjects
WHERE name like '#t'+'%'
AND type = 'U')
begin
set @tmpTable=''
set @tmpTable=(SELECT name FROM tempdb..sysobjects WHERE name like '#t'+'%' AND type = 'U')
exec('drop table '+@tmpTable)
end
GO
--说明
/*
临时表的命名规则:
#t 表示本地变量
##t 表示全局变量
*/