Sql server tempdb中存在Temp表
我正在尝试创建一个存储过程,其中我正在创建一个临时表,其中包含一些FiedJust for entity framework来标识返回字段,否则它只返回int,当我运行存储过程时,EmpTab is create并表示表已经存在,即使我手动删除它。一旦我运行sp,它也会这样说Sql server tempdb中存在Temp表,sql-server,tsql,c#-4.0,Sql Server,Tsql,C# 4.0,我正在尝试创建一个存储过程,其中我正在创建一个临时表,其中包含一些FiedJust for entity framework来标识返回字段,否则它只返回int,当我运行存储过程时,EmpTab is create并表示表已经存在,即使我手动删除它。一旦我运行sp,它也会这样说 alter proc test as begin IF OBJECT_ID('tempdb..#EmpTab ') IS NOT NULL BEGIN DROP TABLE #EmpTab END cre
alter proc test
as
begin
IF OBJECT_ID('tempdb..#EmpTab ') IS NOT NULL
BEGIN
DROP TABLE #EmpTab
END
create table #EmpTab (
ID int,
Name varchar(20),
);
select empId, EmpName into #EmpTab from employee;
select * from #EmpTab ;
drop table #EmpTab ;
end
选择。。。创建临时表。创建表也是如此
清除显式的CREATE表或替换SELECT。。。如果要保留显式创建,请使用插入插入
顺便说一句,这里不需要临时表。整个程序代码可以替换为
select empId, EmpName from employee;
这只是一个带有伪代码的测试过程吗?使用Insert into,因为已经创建了表
Insert into #Emptab(ID,Name)
select empId, EmpName from employee;
请尝试使用以下代码:
alter proc test
as
begin
IF OBJECT_ID('tempdb..#EmpTab ') IS NOT NULL
BEGIN
DROP TABLE #EmpTab
END
create table #EmpTab (
ID int,
Name varchar(20),
);
Insert into #Emptab(ID,Name)
select empId, EmpName from employee;
select * from #EmpTab ;
drop table #EmpTab ;
end
使用“Insert into”Alfaiz Ahmed,您的解决方案成功运行sp,但当执行sp时显示无效的EmpTabAlfaiz Ahmed,您的解决方案效果很好。谢谢。@Saleem welcome Bro如果解决方案对youAlfaiz Ahmed有效,您可以投票给我,这里还有一个问题,在从临时表中选择记录之后,为什么实体框架不能识别返回列,即使我如上所述显式创建临时表。有没有更好的解决方案呢?Alfaiz Ahmed,NOP,entity framework在设置SET NOCOUNT ON和OFFAlfaiz Ahmed之后仍然返回int值。仅供参考,我想知道这个存储过程在我的应用程序中使用,并且该应用程序被许多用户使用。用本地临时表代替全局临时表好吗。
alter proc test
as
begin
IF OBJECT_ID('tempdb..#EmpTab ') IS NOT NULL
BEGIN
DROP TABLE #EmpTab
END
create table #EmpTab (
ID int,
Name varchar(20),
);
Insert into #Emptab(ID,Name)
select empId, EmpName from employee;
select * from #EmpTab ;
drop table #EmpTab ;
end