Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Чем DECLARE @table TABLE отличается от CREATE TABLE #table?  [new]
Byte256
Member

Откуда:
Сообщений: 55
#table надо в конце процедур дропать, это я знаю.
Ещё знаю, что @table можно использовать в функциях, а #table нет.

А как с остальным? Например с производительностью? И вообще зачем было вводить два очень похожих типа временных таблиц?..
15 апр 08, 22:40    [5551593]     Ответить | Цитировать Сообщить модератору
 Re: Чем DECLARE @table TABLE отличается от CREATE TABLE #table?  [new]
ГСА
Guest
А хелп читать не пробовали?
16 апр 08, 00:15    [5551735]     Ответить | Цитировать Сообщить модератору
 Re: Чем DECLARE @table TABLE отличается от CREATE TABLE #table?  [new]
Byte256
Member

Откуда:
Сообщений: 55
ГСА
А хелп читать не пробовали?

BOL в смысле? Только его и читаю. А что разве там есть таблица сравнений? Тогда приведите её тут.
16 апр 08, 09:02    [5552014]     Ответить | Цитировать Сообщить модератору
 Re: Чем DECLARE @table TABLE отличается от CREATE TABLE #table?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Byte256
ГСА
А хелп читать не пробовали?

BOL в смысле? Только его и читаю. А что разве там есть таблица сравнений? Тогда приведите её тут.


А за пивком Вам не сбегать с чипсами?! Чтобы удобно так, расположившись у монитора и потягивая пивко Вы бы пользоваться трудами других, не предприняв для этого никаких усилий самостоятельно.

Сообщение было отредактировано: 16 апр 08, 09:10
16 апр 08, 09:09    [5552039]     Ответить | Цитировать Сообщить модератору
 Re: Чем DECLARE @table TABLE отличается от CREATE TABLE #table?  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Byte256
#table надо в конце процедур дропать, это я знаю.
???
16 апр 08, 09:20    [5552081]     Ответить | Цитировать Сообщить модератору
 Re: Чем DECLARE @table TABLE отличается от CREATE TABLE #table?  [new]
XenoX
Member

Откуда: 0x1F0438044204350440042100
Сообщений: 1980
Byte256
#table надо в конце процедур дропать

Само сдохнет при закрытии конекта....
16 апр 08, 09:24    [5552109]     Ответить | Цитировать Сообщить модератору
 Re: Чем DECLARE @table TABLE отличается от CREATE TABLE #table?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
XenoX
Byte256
#table надо в конце процедур дропать

Само сдохнет при закрытии конекта....


Локальная временная таблица, созданная в хп, будет автоматически уничтожена по завершению хп и об этом написано в документации.
16 апр 08, 09:26    [5552122]     Ответить | Цитировать Сообщить модератору
 Re: Чем DECLARE @table TABLE отличается от CREATE TABLE #table?  [new]
Vel
Member

Откуда: То там, то сям.
Сообщений: 420
pkarklin
XenoX
Byte256
#table надо в конце процедур дропать

Само сдохнет при закрытии конекта....


Локальная временная таблица, созданная в хп, будет автоматически уничтожена по завершению хп и об этом написано в документации.

тем не менее, хорошим тоном считается явный drop. Особенно если учесть, что temporary table не только в процедурах может использоваться
16 апр 08, 13:42    [5554575]     Ответить | Цитировать Сообщить модератору
 Re: Чем DECLARE @table TABLE отличается от CREATE TABLE #table?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Vel
тем не менее, хорошим тоном считается явный drop.


Гм... первый раз слышу о таком "хорошем тоне". Вы, наверное и SETы все, установленные в начале хп, в конце процедуры на место возвращаете?

Vel
Особенно если учесть, что temporary table не только в процедурах может использоваться


Вот с этого момента можно по-подробней, как автоматическое уничтожение локальной временной таблице созданной в хп по выходу из этой хп, коррелируется с Вашей мыслью "temporary table не только в процедурах может использоваться"?!
16 апр 08, 13:49    [5554636]     Ответить | Цитировать Сообщить модератору
 Re: Чем DECLARE @table TABLE отличается от CREATE TABLE #table?  [new]
Alich
Member

Откуда:
Сообщений: 9
https://www.itquiz.ru/blogs/_aslsqlru/archive/2009/03/05/56884.aspx
31 мар 09, 23:22    [7002629]     Ответить | Цитировать Сообщить модератору
 Re: Чем DECLARE @table TABLE отличается от CREATE TABLE #table?  [new]
thesnipe
Member

Откуда:
Сообщений: 4
BOL
Remarks
Functions and variables can be declared to be of type table. table variables can be used in functions, stored procedures, and batches.

Use table variables instead of temporary tables, whenever possible. table variables provide the following benefits:

A table variable behaves like a local variable. It has a well-defined scope, which is the function, stored procedure, or batch in which it is declared.
Within its scope, a table variable may be used like a regular table. It may be applied anywhere a table or table expression is used in SELECT, INSERT, UPDATE, and DELETE statements. However, table may not be used in the following statements:

INSERT INTO table_variable EXEC stored_procedure

SELECT select_list INTO table_variable statements.

table variables are cleaned up automatically at the end of the function, stored procedure, or batch in which they are defined.

table variables used in stored procedures result in fewer recompilations of the stored procedures than when temporary tables are used.


Transactions involving table variables last only for the duration of an update on the table variable. Thus, table variables require less locking and logging resources.
Assignment operation between table variables is not supported. In addition, because table variables have limited scope and are not part of the persistent database, they are not impacted by transaction rollbacks.
31 июл 09, 11:55    [7483663]     Ответить | Цитировать Сообщить модератору
 Re: Чем DECLARE @table TABLE отличается от CREATE TABLE #table?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Вот теперь кто-то каждый год будет в эту тему писать, да?
31 июл 09, 11:56    [7483669]     Ответить | Цитировать Сообщить модератору
 Re: Чем DECLARE @table TABLE отличается от CREATE TABLE #table?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
thesnipe,

Вы на дату последнего поста смотрели?
31 июл 09, 11:57    [7483678]     Ответить | Цитировать Сообщить модератору
 Re: Чем DECLARE @table TABLE отличается от CREATE TABLE #table?  [new]
thesnipe
Member

Откуда:
Сообщений: 4
я посчитал тему незавершенной, т.к. не было ответа на вопрос.
Тему эту нашел гуглом и был страшно разочарован... Впрочем, через пару минут и сам нашел ответ, и решил помочь братьям по разуму, задавшимся тем же вопросом, дабы не были они так же разочарованы...
31 июл 09, 13:21    [7484293]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Чем DECLARE @table TABLE отличается от CREATE TABLE #table?  [new]
guestguestguest
Guest
thesnipe,

И большое вам спасибо за это
16 фев 11, 09:50    [10242569]     Ответить | Цитировать Сообщить модератору
 Re: Чем DECLARE @table TABLE отличается от CREATE TABLE #table?  [new]
geezers_inc
Member

Откуда:
Сообщений: 14
Тоже нашел тему гуглом и был "приятно" удивлен отзывчивостью русских программистов, я думаю фразой "А за пивком Вам не сбегать с чипсами?!" можно ответить на любой вопрос на форуме, честно говоря, я бы за это банил.
А по теме, нашел интересное исследование:
http://www.sql-server-performance.com/articles/per/temp_tables_vs_variables_p1.aspx
из чего видно что вопрос производительности спорный и общих рецептов нет, но для маленьких таблиц табличные переменные лучше и использовать легче
11 апр 11, 10:31    [10499381]     Ответить | Цитировать Сообщить модератору
 Re: Чем DECLARE @table TABLE отличается от CREATE TABLE #table?  [new]
geezers_inc
Member

Откуда:
Сообщений: 14
pkarklin
Локальная временная таблица, созданная в хп, будет автоматически уничтожена по завершению хп и об этом написано в документации.

Видимо сами вы хелп не читаете
"...and they are deleted when the user disconnects from instances of Microsoft® SQL Server™ 2000"
лично напарывался на ошибки когда забывал удалять таблицу
11 апр 11, 10:38    [10499417]     Ответить | Цитировать Сообщить модератору
 Re: Чем DECLARE @table TABLE отличается от CREATE TABLE #table?  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> Видимо сами вы хелп не читаете
> "...and they are deleted when the user disconnects from instances of Microsoft® SQL Server™ 2000"
> лично напарывался на ошибки когда забывал удалять таблицу

не позорьтесь уж:
BOL
A local temporary table created in a stored procedure is dropped automatically when the stored procedure completes.

Posted via ActualForum NNTP Server 1.4

11 апр 11, 10:41    [10499429]     Ответить | Цитировать Сообщить модератору
 Re: Чем DECLARE @table TABLE отличается от CREATE TABLE #table?  [new]
Crimean
Member

Откуда:
Сообщений: 13147
geezers_inc
для маленьких таблиц табличные переменные лучше и использовать легче


не совсем верно :) имхо ключевой момент - статистики. а вот как этим моментом распорядиться - описать в общем виде сложно
11 апр 11, 10:42    [10499434]     Ответить | Цитировать Сообщить модератору
 Re: Чем DECLARE @table TABLE отличается от CREATE TABLE #table?  [new]
geezers_inc
Member

Откуда:
Сообщений: 14
Мы что разный хелп читаем?
"For example, if you create a table named employees, the table can be used by any person who has the security permissions in the database to use it, until the table is deleted. If you create a local temporary table named #employees, you are the only person who can work with the table, and it is deleted when you disconnect."
11 апр 11, 10:43    [10499441]     Ответить | Цитировать Сообщить модератору
 Re: Чем DECLARE @table TABLE отличается от CREATE TABLE #table?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
geezers_inc
Мы что разный хелп читаем?
Вам про временные таблицы, созданные в ХП говорят, вы про созданные в отдельном сеансе...
Читайте ответы внимательнее.
11 апр 11, 10:46    [10499462]     Ответить | Цитировать Сообщить модератору
 Re: Чем DECLARE @table TABLE отличается от CREATE TABLE #table?  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> Мы что разный хелп читаем?
> "For example, if you create a table named employees, the table can be used by any person who has the security
> permissions in the database to use it, until the table is deleted. If you create a local temporary table named
> #employees, you are the only person who can work with the table, and it is deleted when you disconnect."

BOL
A local temporary table created in a stored procedure is dropped automatically when the stored
procedure completes.

при дисконнекте удаляются те, которые вне процедур (или динамического sql) созданы.
так понятно?

Posted via ActualForum NNTP Server 1.4

11 апр 11, 10:49    [10499471]     Ответить | Цитировать Сообщить модератору
 Re: Чем DECLARE @table TABLE отличается от CREATE TABLE #table?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
geezers_inc
можно ответить на любой вопрос на форуме,
я бы за это банил.
Новый админ? Новые правила? Админ тоже будет себя банить?
geezers_inc
А по теме, нашел ...
Для тех кто в танке: поиск. И это только царапнув анналы топиков.
11 апр 11, 10:50    [10499481]     Ответить | Цитировать Сообщить модератору
 Re: Чем DECLARE @table TABLE отличается от CREATE TABLE #table?  [new]
geezers_inc
Member

Откуда:
Сообщений: 14
daw
при дисконнекте удаляются те, которые вне процедур (или динамического sql) созданы.
так понятно?

Да, извиняюсь, поторопился
Mnior
Админ тоже будет себя банить?

А стоило бы
Mnior
Для тех кто в танке: поиск. И это только царапнув анналы топиков.

Неудобно. Когда ты ищешь через поисковик в каждом найденном топике искать свой поиск по местному форуму, это неудобно и отнимает много времени, так что вам надо самим что-то с этим делать
11 апр 11, 11:19    [10499669]     Ответить | Цитировать Сообщить модератору
 Re: Чем DECLARE @table TABLE отличается от CREATE TABLE #table?  [new]
Crimean
Member

Откуда:
Сообщений: 13147
а вообще - некропостеры :-P
11 апр 11, 11:22    [10499706]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить