|
|
|
начинающий - описание задачи
|
|||
|---|---|---|---|
|
#18+
Ситуация более подробно: Несколько пользователей могут войти в программу с одинаковым логином. Значит, возможна ситуация когда оба запустят одну и туже ХП почти одновременно. Чтобы каждый из них работал со своим набором данных в хранимую процедуру передается помимо кода пользователя, текущего времени еще и код рабочей станции. Т.е. генерируется имя будущей временной таблицы (что то типа #tmp412708171003). На вход в ХП подается ряд параметров последующей обработки данных и имя временной таблицы. ХП должна создать эту таблицу, обработать по заданному условию несколько рабочих таблиц и внести в нее (во временную таблицу) какое-то количество записей. На выход ХП выдает содержимое этой временной таблицы. Сама временная таблица после этого не должна удаляться и должна быть доступной из других ХП. 2 Jimmi -> почему не будет видна таблица созданная по методу, приведененому в вашем ответе п.1.??? Что подскажет всезнающий ALL начинающему. Как это сделать правильно и эффективно??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2002, 10:19:47 |
|
||
|
начинающий - описание задачи
|
|||
|---|---|---|---|
|
#18+
Локальные временные таблицы с одинаковыми именами, но созданные из разных коннектов, есть совершенно разные таблицы. Поэтому они и называются локальными. IMHO нет большого смысла городить дополнительный огород для проверки уникальности имен таких таблиц по отношению к другим коннектам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2002, 10:27:28 |
|
||
|
начинающий - описание задачи
|
|||
|---|---|---|---|
|
#18+
временные таблицы действительно доступны только из текущего коннекта и при его закрытии автоматически удаляются... так что ее доступность для других ХП будет весьма ограничена (текущим коннектом). Ежели это не годится, то прийдется создавать обычную таблицу и после использования самому же ее удалять - тогда-то вам и понадобятся эти финты с уникальностью имен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2002, 10:58:23 |
|
||
|
начинающий - описание задачи
|
|||
|---|---|---|---|
|
#18+
Поскольку требуется фактически разделить данные от разных пользователей То предложение по решению проблемы следующее 1. НЕ использовать временную таблицу (название с #) 2. Использовать обыкновенную таблицу вней завести столбец в который при занесении данных писать идентификатор пользователя который эти данные внес им может быть - login - SPID (идентификатор процесса) - прочая фигня (login + время, номер сетевой карты и т.п.) 3. при обработке данных использовать этот самый идентификатор 4. Придумать в каком месте Вашего алгоритма будут вычищаться данные из этой таблицы Например, используем в качестве идентификатора SPID. перед запуском процедуры удаляем из таблицы все записи у которых сейчас нет "хозяина" (на сервере нет такого SPID) и еще удаляем записи у которых "хозяин" - запустивший процедуру SPID. Ну а протом заносим туда новый набор и с ним работаем.... По моему это проще и быстрее чем каждый раз создавать новые таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2002, 11:15:23 |
|
||
|
начинающий - описание задачи
|
|||
|---|---|---|---|
|
#18+
Уважаемый Sequel , Ваши старания по поводу уникальности имени временной таблицы совершенно излишни. В MSSQL сущетвует понятие процесс, так вот если я и вы с разных станций под одним логином возьмемся запускать одну ХП, ничего взрывоопасного не произойдет. Мы оба создадим временные таблицы, только Вы с одним довеском к названию, а я с другим, SQL это сделает сам. По поводу пользования результатами способ один: другие ХП должны быть вызваны здесь же в текущей ХП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2002, 11:23:54 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32046043&tid=1820819]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
107ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 445ms |

| 0 / 0 |
