Ответ 1
Использование
OBJECT_ID('tempdb..#foo')
чтобы получить идентификатор для временной таблицы при запуске в контексте другой базы данных.
Я хочу убедиться, что временная таблица существует в моей базе данных или нет.
Я попытался использовать функцию OBJECT_ID()
, но кажется, что я не могу использовать ее с временными таблицами.
Как я могу решить эту проблему?
Использование
OBJECT_ID('tempdb..#foo')
чтобы получить идентификатор для временной таблицы при запуске в контексте другой базы данных.
Когда вызывается OBJECT_ID, для таблицы временного стола/хэша TEMPDB он должен быть указан, если он уже не работает с базой данных.
Я проверяю SQL2008 и проверяю ниже.
USE SampleDB
create table #tt1 (dummy int)
select OBJECT_ID('SampleDB..#tt1') -- returns NULL
select OBJECT_ID('tempdb..#tt1') -- returns ID
How do you check if a temp table exists?
You can use IF OBJECT_ID('tempdb..#temp') IS NOT NULL
--Check if it exists
IF OBJECT_ID('tempdb..#temp') IS NOT NULL
BEGIN
PRINT '#temp exists!'
END
ELSE
BEGIN
PRINT '#temp does not exist!'
END
Используйте это, чтобы изменить контекст вызова OBJECT_ID на tempdb
OBJECT_ID('tempdb..#table')
OBJECT_ID в MSDN показывает 3 имени объекта объекта. В этом случае вы можете опустить schema_name
OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ]