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

start [/forum/topic.php?fid=46&tid=1819741]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
43ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 192ms |
| total: | 313ms |

| 0 / 0 |
