
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
09.10.2002, 08:50:20
|
|||
|---|---|---|---|
Как передать в процедуру набор строк? |
|||
|
#18+
Приветствую. У меня следующая задача. Есть таблицы T1, T2. В T1 - фиксируется сам факт сделки, а в T2 - некоторые параметры операции: покупка и продажа, так же там фиксируется кол-во, и если это продажа, то с какой покупки она списывается. Получаем: type_operation (приход/расход), Qnt(кол-во), id (при продаже это ключ покупки с которой производится списание). Это очень упрощенно. Но надеюсь понятно. С покупкой все легко. А когда идет продажа, я должен Записать в T1 одну запись, а в T2 при этом может записаться несколько строк, ведь продажа может списывать некторое количество со многих покупок. Сейчас я делаю так: В Дельфи выполняю запрос, показываю пользователю какие есть доступные покупки, он выбирает с каких покупок и какое количесвто списать. Затем я Записываю одну запись в T1 и несколько записей в Т2 (в зависимости от того со скольких покупок он делает списание). Работает, но вопрос такой: как мне сделать, чтобы указанные операции выполнялись в ходе одной транзакции? Вдруг моргнет свет в Т1 успеет запись вставиться а в Т2 - нет. Проблема в том, что пользователь сам должен выбрать с каких покупок списать. Как же мне потом то что он выбрал передать например в хранимую процедуру, чтобы там в ходе одной транзакции произвести все всавки в Т1 и Т2. Курсором как входным параметром пользоваться нельзя... Я сломал голову. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.10.2002, 09:13:09
|
|||
|---|---|---|---|
Как передать в процедуру набор строк? |
|||
|
#18+
Открывайте транзакцию и пишите в ней в некотурую таблицу, а уже после этого запускайте ХП и из этой таблицы читайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.10.2002, 09:18:33
|
|||
|---|---|---|---|
Как передать в процедуру набор строк? |
|||
|
#18+
Хм... а если одновременно два пользователя будут производить списание? В таблце появяться одновременно записи для обоих, и записи занесуться в таблицы дважды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.10.2002, 09:24:56
|
|||
|---|---|---|---|
Как передать в процедуру набор строк? |
|||
|
#18+
Ну дык добавьте в эту таблицу дополнительную информацию, а в ХП дубли не воспринимайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.10.2002, 09:33:31
|
|||
|---|---|---|---|
|
|||
Как передать в процедуру набор строк? |
|||
|
#18+
Во избежании конфликтов мы используем временную таблицу для хранения переменных окружения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.10.2002, 12:33:35
|
|||
|---|---|---|---|
Как передать в процедуру набор строк? |
|||
|
#18+
Передавайте выбранные идентификаторы строкой, разделённой запятыми, а в процедуре из этой строки создавайте таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.10.2002, 13:06:04
|
|||
|---|---|---|---|
Как передать в процедуру набор строк? |
|||
|
#18+
2 Херург В MS SQL таблица, созданная с префиксом #, видна только в пределах оной сессии и уничтожается автоматически по окончанию этой сессии. (На самом деле создается таблица с уникальным именем) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.10.2002, 15:40:17
|
|||
|---|---|---|---|
Как передать в процедуру набор строк? |
|||
|
#18+
У меня получилось, что если таблица временная, а процедура сложная, то много времени уходит на перекомпиляцию ХП и построение плана. Использую постоянную таблицу и вставляю туда заодно @@SPID, чтобы процессы не смешивались. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=46&mobile=1&tid=1819741]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
83ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 404ms |

| 0 / 0 |
