Sql server tempdb中存在Temp表

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

我正在尝试创建一个存储过程,其中我正在创建一个临时表,其中包含一些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


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