Как проверить наличие определяемого пользователем типа таблицы в SQL Server 2008?

как создать узел-заглушку (document.createElement ('div') - или использовать эквивалент вашей библиотеки), заполняя его строкой xml (через innerHTML) и вызывая простую рекурсивную функцию для корневого элемента / или элемента-заглушки в случае, если у вас нет корня. Функция будет вызывать себя для всех дочерних узлов.

Вы могли бы затем синтаксически выделить на этом пути, убедитесь, что разметка хорошо сформирована (выполняется автоматически браузером при добавлении через innerHTML) и т. Д. Это не будет 't быть таким кодом и, вероятно, достаточно быстро.

149
задан abatishchev 2 July 2013 в 04:47
поделиться

3 ответа

Вы можете посмотреть в sys.types или использовать TYPE_ID:

IF TYPE_ID(N'MyType') IS NULL ...

Просто предостережение: использование type_id не проверит, что тип является табличным типом - только то, что тип с таким именем существует. В остальном запрос gbn, вероятно, лучше.

170
ответ дан 23 November 2019 в 22:00
поделиться
IF EXISTS (SELECT * FROM sys.types WHERE is_table_type = 1 AND name = 'MyType')
    --stuff

sys.types... они не являются объектами, скопированными в схему, поэтому их не будет в sys.objects

Update, Mar 2013

Вы можете использовать TYPE_ID тоже

102
ответ дан 23 November 2019 в 22:00
поделиться
IF EXISTS(SELECT 1 FROM sys.types WHERE name = 'Person' AND is_table_type = 1 AND SCHEMA_ID('VAB') = schema_id)
DROP TYPE VAB.Person;
go
CREATE TYPE VAB.Person AS TABLE
(    PersonID               INT
    ,FirstName              VARCHAR(255)
    ,MiddleName             VARCHAR(255)
    ,LastName               VARCHAR(255)
    ,PreferredName          VARCHAR(255)
);
17
ответ дан 23 November 2019 в 22:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: