SQL - 如何将声明的变量选择到#temp表中

时间:2011-09-08 16:56:44

标签: sql-server-2000

我想做

  

SELECT @ var1,@ var2   
INTO #myTempTable

我一直收到错误

There is already an object named '#myTempTable' in the database.

我的代码

CREATE TABLE #myTempTable
(
   [value1] varchar(10),
   [value2] varchar(20)
)

declare @var1 varchar(10), @var2 varchar(20)

SELECT @var1 = [value1], @var2 = [value2]
FROM somePermTable
where Condition = true

SELECT @var1, @var2 INTO #myTempTable

drop table #myTempTable

我做错了什么?

3 个答案:

答案 0 :(得分:1)

INSERT INTO #TempTables SELECT @var1, @var2
Select ... into创建一个新表(已在您的情况下创建)。 Insert ... select将数据插入现有表格。

<强>更新 更多解释。
SQL Server不允许创建具有相同名称的2个表。在您的情况下,您有两次创建的本地临时表(第一次CREATE TABLE,第二次SELECT ... INTO..),因此您收到错误。 取决于你想要什么你可以 1.下桌并再次创建
2.从中删除所有数据(如果有)并使用INSERT INTO... SELECT

填充它

答案 1 :(得分:0)

您必须在以后添加drop table @myTempTable,因此SQL Server仍会看到此表。打开一个新的查询窗口并执行

drop table #myTempTable

然后您可以执行原始命令:

CREATE TABLE #myTempTable
(
   [value1] varchar(10),
   [value2] varchar(20)
)

declare @var1 varchar(10), @var2 varchar(20)

SELECT @var1 = [value1], @var2 = [value2]
FROM somePermTable
where Condition = true

SELECT @var1, @var2 INTO #myTempTable

drop table #myTempTable

看起来你已经有一个临时表,只需先删除它

DROP TABLE #myTempTable

答案 2 :(得分:-1)

declare @R(empno number,ename varchar(30),sal number);

insert into @R(select empno,ename,sal from emp where deptno=20);

如何将上述SQl服务器代码转换为Oracle PL SQL。 任何人都可以建议我们必须使用什么概念。