![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по переменной типа table [MSSQL]
Ega23 © (2006-09-25 14:14:00)Исходные данные:
0. MS SQL 2000
1. Есть Master-таблица с иерархической структурой:
Create Table ProtocolEventTypes (
PrtEveTypCod int,
ParPrtEveTypCod int, -- FK на PrtEveTypCod,
........
)
2. Есть Detail-таблица, один-к-одному на Master:
Create Table ProtocolEvents (
PrtEveCod int,
PrtEveTypCod int, -- FK на ProtocolEventTypes.PrtEveTypCod
........
)
Задача: на клиенте данные из ProtocolEventTypes находятся в дереве. Рядом грид с данными из ProtocolEvents.
Нужно, выбрав любой узел в дереве, получить в гриде выборку по всем записям из detail-таблицы для данного узла, а также для всех узлов-потомков.
Как я обычно реализовывал: либо в динамике при рекурсивном обходе создавал строку типа id in (.....) и передавал её как output-параметр в SP, либо создавал временную таблицу и вставлял в неё на очередном такте рекурсии нужные мне записи.
Недавно увидел проDeclare t table (x int)
Возникают вопросы: в каком контексте создаётся t? TempDB или текущая БД? Как её надо убивать? Какие могут быть "подводные камни" при таком объявлении таблицы?
Ega23 (2006-09-25 14:29:00) [21]
> Можешь с ней работать только в пределах скрипта, из дугих
> скриптов она не видима, как и любая локальная переменная
Ага, понятно. А как мне её в ХП передать при рекурсивном вызове?
stone (2006-09-25 14:25:00) [22]
> Возникают вопросы: в каком контексте создаётся t?
В контексте твоего скрипта, как и любая локальная переменная.
> TempDB или текущая БД?
Темп, все в темп...
> Как её надо убивать?
Никак, как и любую локальную переменную
> Какие могут быть "подводные камни" при таком объявлении
> таблицы?
Можешь с ней работать только в пределах скрипта, из дугих скриптов она не видима, как и любая локальная переменная