Используя функцию Object_id() С#tables

Я хочу убедиться, что временная таблица существует в моей базе данных или нет.

Я попытался использовать функцию OBJECT_ID(), но кажется, что я не могу использовать ее с временными таблицами.

Как я могу решить эту проблему?

Ответы

Ответ 1

Использование

OBJECT_ID('tempdb..#foo')

чтобы получить идентификатор для временной таблицы при запуске в контексте другой базы данных.

Ответ 2

Когда вызывается 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

Ответ 3

Из Кодовая книга SQL Server

How do you check if a temp table exists?
You can use IF OBJECT_ID('tempdb..#temp') IS NOT NULL

SQL Script

--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

Ответ 4

Используйте это, чтобы изменить контекст вызова OBJECT_ID на tempdb

OBJECT_ID('tempdb..#table')

OBJECT_ID в MSDN показывает 3 имени объекта объекта. В этом случае вы можете опустить schema_name

OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ]