|
|
|
Избитая тема о существовании временных таблиц
|
|||
|---|---|---|---|
|
#18+
Уважаемые мемберы и guest'ы! Понадобилось мне как-то раз проверить существование временной таблицы, ну я, есессно, какой-то код для этого написал, а потом любопытство одолело, как же решают эту проблему участники данного форума. И пошел я в поиск. И был несколько озадачен его результатами. Встречались такие варианты: 1. Код: plaintext Понятно, что данное решение далеко от совершенства (даже более - оно совсем никуда не годится), потому что по LIKE может отфильтроваться далеко не одна таблица. 2. Код: plaintext Замечательно работает, но также сработает и в том случае, когда существует временная процедура с заданным именем, так что тоже не панацея. А в основном на данный вопрос ответ давался такой (типа универсальный и "самый правильный"): Код: plaintext 1. 2. 3. 4. Только вот непонятно мне, господа, как же это он у вас работает? Если его потестить, то он оказывается совершенно нежизнеспособным, ибо, как гласит BOL, функция ObjectProperty "Returns information about objects in the CURRENT database." (uppercased by me). В чем все и могут убедиться, прогнав простейший тестовый примерчик. Поэтому, если я правильно понимаю ситуацию, в проверке на существование временных таблиц ObjectProperty не пришей к звезде рукав получается, ибо данное условие никогда не выполнится. Попинайте меня, если я не прав. Приношу извинения за возможный повтор, может быть, данная фича уже была кем-то отловлена, а я просто проглядел... З.Ы. Для решения сабжа я использую следующий код: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2002, 18:38:49 |
|
||
|
Избитая тема о существовании временных таблиц
|
|||
|---|---|---|---|
|
#18+
Замечательно работает, но также сработает и в том случае, когда существует временная процедура с заданным именем, так что тоже не панацея. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2002, 08:44:49 |
|
||
|
Избитая тема о существовании временных таблиц
|
|||
|---|---|---|---|
|
#18+
2snake Действительно, работает. Не знал, что у Object_ID может быть два параметра, "век живи - век учись" © Однако в процессе тестирования выяснилась следующая интересная весчь - одновременное существования временной таблицы и временной же процедуры с таким же именем чревато боком. Мудрый SQL Server в таком случае посредством функции Object_ID обращает внимание только на объект, созданный последним. В чем можно убедиться, прогнав нижеприведенный скриптик: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2002, 09:53:29 |
|
||
|
Избитая тема о существовании временных таблиц
|
|||
|---|---|---|---|
|
#18+
Очередная недоработка от MS... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2002, 10:03:22 |
|
||
|
Избитая тема о существовании временных таблиц
|
|||
|---|---|---|---|
|
#18+
Замечание: В реальном приложении, если интенсивно используются временные таблицы, такие проверки могут породить блокировки таблицы sysobjects и общее замедление работы сервера, поэтому в SELECTe рекомендую использвать хинт WITH (NOLOCK). В часто используемых процедурах безусловно нельзя делать такие запросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2002, 13:12:37 |
|
||
|
|

start [/forum/topic.php?fid=46&tid=1820926]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
46ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
23ms |
get tp. blocked users: |
1ms |
| others: | 193ms |
| total: | 293ms |

| 0 / 0 |
