2011-01-23 5 views
2

У меня есть что-то вродеКак вставить в [временную таблицу] FROM [хранимой процедуры] и SELECT * FROM [временную таблицу]

Create TABLE #members 
( 
    [member_id] [bigint] NOT NULL, 
    [registration_id] [int] NOT NULL, 
    [date_modified] [datetime] NULL, 
    [date_created] [datetime] NULL 
) 
INSERT #members 
(
    [member_id], 
    [registration_id], 
    [date_modified], 
    [date_created] 
) 
EXEC 
dbo._roster_member_GetMemberContacts_byMember_id @Member_id = 1000 
Select * from #members 

, когда я запускаю его в окне анализатора запросов: Существует уже объект с именем «# members» в базе данных.

ответ

4

В Query Analyzer, если вы явно не указали DROP временную таблицу, временная таблица будет существовать в течение всего времени работы окна Query Analyzer.

+0

Я отредактировал мой вопрос - мне не хватает чего-то ... – FiveTools

+0

@FiveTools - это странно. Без кода SP трудно сказать, что происходит, но используя заглушку для SP, ваш код отлично работает для меня. Какую версию SQL вы используете? – LittleBobbyTables

+0

Кроме того, что происходит, когда вы просто выполняете команду 'DROP TABLE', а затем пытаетесь перезапустить все? Возможно, в какой-то момент код имел ошибку и не выполнял 'DROP TABLE' в качестве последней строки кода. – LittleBobbyTables

3

Используйте следующую идиому:

if object_id('tempdb..#temptable', 'U') is not null 
    drop table #temptable 
create table #temptable (...) 
... rest of SQL ... 

Очевидно, заменяющее имя вашей темп таблицы.