Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 функция OBJECT_ID  [new]
Лёхан
Member

Откуда:
Сообщений: 5
MS SQL Server 2000. При проверке существования возвращающей табличное значение функции 'fun_multi':
IF OBJECT_ID('fun_multi', 'TF') IS NOT NULL
выдается сообщение:
Invalid parameter 2 specified for object_id.
Хотя:
IF EXISTS (SELECT * FROM sysobjects WHERE (name = 'fun_multi') AND (xtype = 'TF') AND (type = 'TF'))

отрабатывается нормально!
Да и в MS SQL Server 2012 проблем нет. В чем проблема при использовании OBJECT_ID(..., ...)?
30 июн 18, 11:11    [21532763]     Ответить | Цитировать Сообщить модератору
 Re: функция OBJECT_ID  [new]
tunknown
Member

Откуда:
Сообщений: 759
Лёхан
IF OBJECT_ID('fun_multi', 'TF') IS NOT NULL
...
sysobjects
Если я правильно понял вопрос, то второй параметр OBJECT_ID не всегда соответствует sysobjects.xtype. Надо подбирать другое значение(поискать в ***\***.MSSQLSERVER\MSSQL\Install\*.sql) или оставлять только первый параметр.
30 июн 18, 11:15    [21532767]     Ответить | Цитировать Сообщить модератору
 Re: функция OBJECT_ID  [new]
aleks222
Member

Откуда:
Сообщений: 923
Лёхан
MS SQL Server 2000.
SQL Server 2012

В чем проблема при использовании OBJECT_ID(..., ...)?


Дык, MS SQL Server 2000 не поддерживал второй параметр.
30 июн 18, 14:01    [21532953]     Ответить | Цитировать Сообщить модератору
 Re: функция OBJECT_ID  [new]
Лёхан
Member

Откуда:
Сообщений: 5
aleks222! Благодарю.
Т.е. имена всех объектов д.б. уникальны? Ну ладны. Тема закрыта.
2 июл 18, 02:04    [21535754]     Ответить | Цитировать Сообщить модератору
 Re: функция OBJECT_ID  [new]
Лёхан
Member

Откуда:
Сообщений: 5
aleks222
Хотя...
А какого Х срабатывает
IF OBJECT_ID('proc_a_e_users_', 'P') IS NOT NULL
???
2 июл 18, 03:08    [21535762]     Ответить | Цитировать Сообщить модератору
 Re: функция OBJECT_ID  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31331
Лёхан
aleks222
Хотя...
А какого Х срабатывает
IF OBJECT_ID('proc_a_e_users_', 'P') IS NOT NULL
???
Официально до 2005 OBJECT_ID был с одним аргументом, а второй был недокументирован, видимо, он может принимать не все значения...
2 июл 18, 09:28    [21535911]     Ответить | Цитировать Сообщить модератору
 Re: функция OBJECT_ID  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Лёхан,

потому что OBJECT_ID смотрит на sys.objects, а вы смотрите на sys.sysobjetcs и это разные представления на разные объекты и TF там только с 2012
2 июл 18, 10:11    [21535993]     Ответить | Цитировать Сообщить модератору
 Re: функция OBJECT_ID  [new]
Лёхан
Member

Откуда:
Сообщений: 5
alexeyvg, благодарю!
Видимо в 2000 так и есть. В принципе, не очень актуально.
Просто в РАЗОВОМ заказе сделал проверку в 2000 по аналогии с 2012
и столкнулся с этой фишкой. Захотелось разобраться.
Скорее всего, дело во 2-ом аргументе (принимаемых им значениях). Ну да ладны.
4 июл 18, 07:34    [21541200]     Ответить | Цитировать Сообщить модератору
 Re: функция OBJECT_ID  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31331
Лёхан
Просто в РАЗОВОМ заказе сделал проверку в 2000 по аналогии с 2012
и столкнулся с этой фишкой
Я, честно говоря, не понимаю, откуда вдруг взялась мода использовать второй аргумент OBJECT_ID. Я могу представить, когда это необходимо, но это уж совсем навороченные случаи.
4 июл 18, 09:13    [21541317]     Ответить | Цитировать Сообщить модератору
 Re: функция OBJECT_ID  [new]
cossack5
Member

Откуда:
Сообщений: 496
alexeyvg
Лёхан
Просто в РАЗОВОМ заказе сделал проверку в 2000 по аналогии с 2012
и столкнулся с этой фишкой
Я, честно говоря, не понимаю, откуда вдруг взялась мода использовать второй аргумент OBJECT_ID. Я могу представить, когда это необходимо, но это уж совсем навороченные случаи.

Это в коде системных хранимок вроде встречается со вторым аргументом.
4 июл 18, 18:37    [21543845]     Ответить | Цитировать Сообщить модератору
 Re: функция OBJECT_ID  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31331
cossack5
alexeyvg
пропущено...
Я, честно говоря, не понимаю, откуда вдруг взялась мода использовать второй аргумент OBJECT_ID. Я могу представить, когда это необходимо, но это уж совсем навороченные случаи.

Это в коде системных хранимок вроде встречается со вторым аргументом.
И что, системные процедуры стали выдавать ошибки при выполнении? :-) Встречается, и бог с ними.
Не надо слепо копировать кривой код из системных процедур.
5 июл 18, 09:51    [21544909]     Ответить | Цитировать Сообщить модератору
 Re: функция OBJECT_ID  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
alexeyvg
Лёхан
Просто в РАЗОВОМ заказе сделал проверку в 2000 по аналогии с 2012
и столкнулся с этой фишкой
Я, честно говоря, не понимаю, откуда вдруг взялась мода использовать второй аргумент OBJECT_ID. Я могу представить, когда это необходимо, но это уж совсем навороченные случаи.
Хочу обратиться к таблице, но такой нет. Зато есть процедура с таким именем.
Без второго параметра в этом случае как-то не так удобно.
5 июл 18, 10:59    [21545165]     Ответить | Цитировать Сообщить модератору
 Re: функция OBJECT_ID  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31331
iap
alexeyvg
пропущено...
Я, честно говоря, не понимаю, откуда вдруг взялась мода использовать второй аргумент OBJECT_ID. Я могу представить, когда это необходимо, но это уж совсем навороченные случаи.
Хочу обратиться к таблице, но такой нет. Зато есть процедура с таким именем.
Без второго параметра в этом случае как-то не так удобно.
Вот про это я и говорю "могу представить" :-)
То есть некая навороченная динамическая система с собственными метаданными и т.д.
Чтож, если такая система, можно и запрос к системным представлениям сделать, ведь не нерешаемая задача.
5 июл 18, 11:19    [21545258]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить