С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
19 / 19 / 12
Регистрация: 09.12.2014
Сообщений: 250

Получить количество обработанных строк с Insert-ов и Delete-ов

29.07.2016, 09:34. Показов 3180. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть процедура в ms sql, она вставляет строки в 3 разных таблицы и обновляет ещё в 3х.
Запускаю из делфи в квери "exec proc"
Как мне в делфи получить те же цифры, которые я получаю в SQL Management при выполнении там этой же строчки кода?
И в том же порядке, чтобы я представлял как отработала процедура:
(строк обработано: 0)

(строк обработано: 1742)

(строк обработано: 1913)

(строк обработано: 2)

(строк обработано: 2)

(строк обработано: 0)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.07.2016, 09:34
Ответы с готовыми решениями:

ADO+MS SQL: как узнать количество обработанных строк при insert в ADO Query?
Добрый день. При выполнении запроса в MS SQL insert into ..(,,) select 0,20,'Text' where not exists (select 1 from .. where...

Процедур обработки строк Insert, Delete, Pos
Реализовать на языке ассемблера набор процедур обработки строк из системы Turbo Pascal, спасибо 1. Delete(S, p, i). Удалить из строки S i...

Как узнать количество строк, обработанных предыдущим запросом?
из какой (может быть глобальной) переменной можно узнать количество строк обработанных любым (update, select ...) предидущим запросом?...

10
5958 / 4534 / 1094
Регистрация: 29.08.2013
Сообщений: 28,139
Записей в блоге: 3
29.07.2016, 15:14
версию делфи и компоненты для доступа к SQL нужно угадать?
0
19 / 19 / 12
Регистрация: 09.12.2014
Сообщений: 250
29.07.2016, 15:42  [ТС]
хм. Не думал что от версии зависит.
xe8, mssql 2008, devexpress 14, firedac
0
5958 / 4534 / 1094
Регистрация: 29.08.2013
Сообщений: 28,139
Записей в блоге: 3
29.07.2016, 17:20
может триггер вам поможет при для отлова этих значений?
а результат можно добавлять в хранимку, а потом выводить себе
0
19 / 19 / 12
Регистрация: 09.12.2014
Сообщений: 250
01.08.2016, 10:11  [ТС]
qwertehok, триггер поможет, но я работаю с 4мя разными базами, и много разных обработок, на каждую писать триггер - всё же сложнее, чем получать результат как из SQL Management.
0
5958 / 4534 / 1094
Регистрация: 29.08.2013
Сообщений: 28,139
Записей в блоге: 3
01.08.2016, 10:26
Лучший ответ Сообщение было отмечено texnix как решение

Решение

тогда может такое вам поможет

Also, the command returns warnings, hints, and messages, depending on the DBMS. To enable messages processing, set ResourceOptions.ServerOutput to True. To process the messages, use theTFDConnection.Messages property.
For example:
Delphi
1
2
3
4
5
6
7
8
9
var
  i: Integer;
begin
  FDConnection1.ResourceOptions.ServerOutput := True;
  FDQuery1.ExecSQL;
  if FDConnection1.Messages <> nil then
    for i := 0 to FDConnection1.Messages.ErrorCount - 1 do
      Memo1.Lines.Add(FDConnection1.Messages[i].Message);
end;
1
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
01.08.2016, 10:37
Цитата Сообщение от texnix Посмотреть сообщение
Как мне в делфи получить те же цифры, которые я получаю в SQL Management при выполнении там этой же строчки кода?
MS SQL есть "Предложение OUTPUT" https://msdn.microsoft.com/ru-... 77564.aspx
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
create database T1
-------------
use T1;
----------------------------
create table Tab1(id int identity,
                  naimen nvarchar(30),
                  proce money
                  constraint pk_t primary key(id)
                  )
---Возвращает только те данных который добавляется  
insert into Tab1(naimen, proce) 
output inserted.*
values(N'Сахар', 15.50),
      (N'Чай', 50.50),
      (N'Пива', 20.50)
      
-- Возврашаеть только удаление записей
delete from Tab1
output deleted.*
и когда OUTPUT возвращает те данных который вставляется или удаляется из Delphi можно почитать количество помощью RecordCount
0
19 / 19 / 12
Регистрация: 09.12.2014
Сообщений: 250
02.08.2016, 10:04  [ТС]
qwertehok,
попробовал, пусто. Видимо только ошибки будут там выводиться. Погуглил ваше предложение, нашёл :
"FireDAC.Comp.Script.TFDScriptOptions.Ec hoCommands" Но это применимо к TFDScript - а где этот компонент взять или чьим он парентом является я так в хелпе и не нашёл.

Добавлено через 2 минуты
xxbesoxx,
А если в процедуре у меня 5 строчек insert и 5 update, как мне получить output не разрезая процедуру на 10 процедур?
0
5958 / 4534 / 1094
Регистрация: 29.08.2013
Сообщений: 28,139
Записей в блоге: 3
02.08.2016, 10:14
Цитата Сообщение от texnix Посмотреть сообщение
Видимо только ошибки будут там выводиться.
не думаю, я так хотел % бэкапа отлавливать и точно видел что
SQL
1
print 'aaa'
так ловится

Цитата Сообщение от texnix Посмотреть сообщение
TFDScript - а где этот компонент взять
Миниатюры
Получить количество обработанных строк с Insert-ов и Delete-ов  
0
19 / 19 / 12
Регистрация: 09.12.2014
Сообщений: 250
02.08.2016, 12:45  [ТС]
qwertehok, попробовал ФДскрипт, он выдаёт типа "Ok [00:00:04.181]." то есть результат и время.
Так что использовал информацию из двух ваших постов, получилось в процедуре после каждой вставки:
T-SQL
1
print 'Вставлено в таблицу один:'+cast(@@ROWCOUNT as nvarchar(5))
и в программе FDConnection1.Messages[i].Message.
0
5958 / 4534 / 1094
Регистрация: 29.08.2013
Сообщений: 28,139
Записей в блоге: 3
02.08.2016, 14:14
а если вместо print попробовать RaiseException?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.08.2016, 14:14
Помогаю со студенческими работами здесь

Как динамически забирать из Merge количество обработанных строк?
Есть приложение, написанное на C# Это приложение запускает хранимую процедуру Хранимая процедура содержит в себе Merge Цель: создать...

1. Реализовать функции для вставки и удаления строк аналогичные процедурам Insert и Delete в Турбо-Паскале.
Реализовать функции для вставки и удаления строк аналогичные процедурам Insert и Delete в Турбо-Паскале. Помогите,пожалуйста,завтра нужно...

как ограничить количество вводимых строк ? (insert)
sql='INSERT INTO tblItem (Shape) VALUES ('' &amp; typeshape &amp; '')' такой вопрос: нужно, чтобы пользователь мог вводить в систему не более...

Определить количество обработанных деталей,
Определить количество обработанных деталей, которое можно выполнить заданным инструментом до его замены по причине износа, если его...

INSERT DELETE UPDATE
Стоит ли блокировать таблицы при вставке допустим в базу новых записей. Может возникнуть такая ситуация что в одну и ту же секунду будет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru