SQL - Как выбрать объявленные переменные в таблице #temp - PullRequest
1 голос
/ 08 сентября 2011

Я хочу сделать

SELECT @ var1, @ var2INTO # 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 ]

1 голос
/ 08 сентября 2011

INSERT INTO #TempTables SELECT @var1, @var2
Select ... into создает новую таблицу (которая уже создана в вашем случае).Insert ... select вставляет данные в существующую таблицу.

Обновление Дополнительные пояснения.
SQL Server не позволяет создавать 2 таблицы с одинаковыми именами.В вашем случае у вас есть локальная временная таблица, которая создается дважды (1-й раз CREATE TABLE, 2-й SELECT ... INTO..), поэтому вы получаете ошибку.Зависит от того, что вы хотите:
1. Удалите таблицу и создайте ее снова
2. Удалите из нее все данные (если есть) и заполните ее INSERT INTO... SELECT

0 голосов
/ 18 марта 2015
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. Любой может предложить, какую концепцию мы должны использовать для этого.

0 голосов
/ 08 сентября 2011

Вы должны добавить добавленную таблицу @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

...