我正在尝试创建一个存储过程,我在其中创建一个带有一些fieds的临时表(仅用于实体框架以识别返回字段,否则它只返回int)并且当我运行我的存储过程时#EmpTab是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
答案 0 :(得分:4)
SELECT ... INTO
创建临时表。 CREATE TABLE
也是如此。
如果要保留显式创建,请删除显式CREATE TABLE
或将SELECT ... INTO
替换为INSERT
。
BTW无论如何都不需要临时表。整个程序代码可以替换为
select empId, EmpName from employee;
这只是一个带有虚拟代码的测试程序吗?
答案 1 :(得分:0)
使用Insert into,因为已经创建了表
Insert into #Emptab(ID,Name)
select empId, EmpName from employee;
答案 2 :(得分:0)
IF you check your script you will find #EmpTab Is Getting Created Twice
1)1st time you create Temp Table.
2)While Inserting Data INTO Temp Table.
Both time you Create Same Temp_Table.
CREATE proc test
AS
BEGIN
SET NOCOUNT ON
SELECT empId, EmpName INTO #EmpTab
FROM employee;
SELECT * FROM #EmpTab ;
DROP TABLE #EmpTab ;
SET NOCOUNT OFF
END
答案 3 :(得分:0)
尝试使用以下代码:
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