Member 13138564 Ответов: 1

Как мне заполнить временную таблицу?.


Эй

1) временная таблица не создается процедурой.
2) даже я пробовал использовать tempdb..tablename, но не очень полезно
3) поэтому я изменил код, взятый из постоянной таблицы вместо временной таблицы..
и код работает, и постоянная таблица заполняется..


Может ли кто-нибудь, пожалуйста, помочь....
Я не знаю, почему таблица temmp не создается ?

Заранее спасибо..

Что я уже пробовал:

ИЗМЕНИТЬ ПРОЦЕДУРУ USP_FONM_HM
(
@DB_NAME NVARCHAR (MAX), -- DB NAME
@FORMAT_TABLE NVARCHAR (МАКС.),
@FORMAT_NODUPS NVARCHAR(MAX) -- УДАЛИТЬ ТАБЛИЦУ NO DUPS

)

АС

--@SQL_NO_DUPS_ID NVARCHAR (MAX) -- ИЗВЛЕЧЕНИЕ МАКСИМАЛЬНОГО ИДЕНТИФИКАТОРА ИЗ ПРЕДЫДУЩЕГО СКРИПТА

НАЧАТЬ
ОБЪЯВИТЬ @SQL_REMOVE_NODUPS NVARCHAR (MAX) -- ВРЕМЕННАЯ ТАБЛИЦА

ПЕЧАТЬ '-- УДАЛИТЬ ДУБЛИКАТЫ --'
НАЧАТЬ
SET @SQL_REMOVE_NODUPS=
Функция concat
(

"УДАЛИТЬ", ПРОСТРАНСТВО(1),'#',@FORMAT_NODUPS,'

;С SAMPLECTE
АС
(
Выберите A.* , ROW_NUMBER () OVER ( PARTITION BY FIRST_NAME , LAST_NAME , ADDRESS, ZIP ORDER BY FIRST_NAME) в качестве RNUM
ИЗ,КОСМОСА(1), @ИМЯ_БАЗЫ_ДАННЫХ,'..',@FORMAT_TABLE , А
)
ВЫБЕРИТЕ * INTO',ПРОБЕЛ(2) ,'#',@FORMAT_NODUPS , '
ИЗ SAMPLECTE, ГДЕ RNUM=','1','
'
)
КОНЕЦ
PRINT @SQL_REMOVE_NODUPS

EXEC (@SQL_REMOVE_NODUPS)

КОНЕЦ

------------------
СТАРПОМА USP_FONM_HM 'ПРАКТИКА','TEST_FORMAT','TEST_FORMAT_NODUPS'

an0ther1

Локальные временные таблицы доступны только для того соединения, для которого они были созданы. Как только соединение отключается, таблица автоматически удаляется.
Если вы используете SSMS &debug, step through, вашу хранимую процедуру, вы можете использовать обозреватель объектов для просмотра таблицы. Но название не совсем такое, как вы указали.
Таблица будет называться #<tablename>_____<sessionid>
Это гарантирует, что 2 пользователя могут создавать и получать доступ к одной и той же временной таблице одновременно.

с уважением

1 Ответов

Рейтинг:
0

#realJSOP

Он не будет создан, если он уже существует. На самом деле, вы должны получить ошибку.

Кроме того, даже если вы определяете строку как NVARCHAR(MAX), вы должны предшествовать самой строке с N, например:

DECLARE @query NVARCHAR(MAX) = N'...';


Выполнение динамического запроса без буквы "N" может привести к тому, что действительно длинный запрос будет прерван и не будет выполняться правильно.

Я также делаю это привычкой, чтобы предшествовать созданию временной таблицы с этим (это одна из тех вещей CYA):

IF UNIQUE_ID('tempdb..#tempTable', 'U') IS NOT NULL DROP TABLE #tempTable;


#realJSOP

Есть ли у вас разрешения на выполнение сохраненного процесса?

Member 13138564

Да...