powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как передать в процедуру набор строк?
8 сообщений из 8, страница 1 из 1
Как передать в процедуру набор строк?
    #32056594
Херург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую.
У меня следующая задача.
Есть таблицы T1, T2. В T1 - фиксируется сам факт сделки, а в T2 - некоторые параметры операции: покупка и продажа, так же там фиксируется кол-во, и если это продажа, то с какой покупки она списывается. Получаем:
type_operation (приход/расход), Qnt(кол-во), id (при продаже это ключ покупки с которой производится списание). Это очень упрощенно. Но надеюсь понятно.
С покупкой все легко. А когда идет продажа, я должен
Записать в T1 одну запись, а в T2 при этом может записаться несколько строк, ведь продажа может списывать некторое количество со многих покупок. Сейчас я делаю так: В Дельфи выполняю запрос, показываю пользователю какие есть доступные покупки, он выбирает с каких покупок и какое количесвто списать. Затем я Записываю одну запись в T1 и несколько записей в Т2 (в зависимости от того со скольких покупок он делает списание). Работает, но вопрос такой: как мне сделать, чтобы указанные операции выполнялись в ходе одной транзакции? Вдруг моргнет свет в Т1 успеет запись вставиться а в Т2 - нет. Проблема в том, что пользователь сам должен выбрать с каких покупок списать. Как же мне потом то что он выбрал передать например в хранимую процедуру, чтобы там в ходе одной транзакции произвести все всавки в Т1 и Т2. Курсором как входным параметром пользоваться нельзя... Я сломал голову.
...
Рейтинг: 0 / 0
Как передать в процедуру набор строк?
    #32056600
Trong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Открывайте транзакцию и пишите в ней в некотурую таблицу, а уже после этого запускайте ХП и из этой таблицы читайте.
...
Рейтинг: 0 / 0
Как передать в процедуру набор строк?
    #32056603
Херург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм... а если одновременно два пользователя будут производить списание? В таблце появяться одновременно записи для обоих, и записи занесуться в таблицы дважды.
...
Рейтинг: 0 / 0
Как передать в процедуру набор строк?
    #32056604
Trong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну дык добавьте в эту таблицу дополнительную информацию, а в ХП дубли не воспринимайте.
...
Рейтинг: 0 / 0
Как передать в процедуру набор строк?
    #32056607
dkstranger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во избежании конфликтов мы используем
временную таблицу для хранения переменных
окружения
...
Рейтинг: 0 / 0
Как передать в процедуру набор строк?
    #32056689
Фотография akuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Передавайте выбранные идентификаторы строкой, разделённой запятыми, а в процедуре из этой строки создавайте таблицу.
...
Рейтинг: 0 / 0
Как передать в процедуру набор строк?
    #32056707
Фотография RedPank
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Херург
В MS SQL таблица, созданная с префиксом #, видна только в пределах оной сессии и уничтожается автоматически по окончанию этой сессии.
(На самом деле создается таблица с уникальным именем)
...
Рейтинг: 0 / 0
Как передать в процедуру набор строк?
    #32056784
VAT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня получилось, что если таблица временная, а процедура сложная, то много времени уходит на перекомпиляцию ХП и построение плана. Использую постоянную таблицу и вставляю туда заодно @@SPID, чтобы процессы не смешивались.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как передать в процедуру набор строк?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]