![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL-запрос
Delphist © (2008-09-03 13:32:00)Как написать SQL запрос который удаляет из таблицы записи и возвращает количество удаленных записей в компонент Edit
stas (2008-09-03 18:44:00) [1]Palladin © (03.09.08 17:50) [24]
а точно, забыл за эту переменную.
Palladin (2008-09-03 17:50:00) [2]
> stas © (03.09.08 17:45) [23]
кхм, а
Delete from mytable
select @@rowcount
низя? замест страшных ресурсоемких операций?
stas (2008-09-03 17:45:00) [3]MSSQL 2005
create table #tbl (Number int)
DELETE MYTABLE OUTPUT 1 INTO #tbl WHERE [ID]=3
Select count (*) from #tbl
Palladin (2008-09-03 17:12:00) [4]А вообще по теме jet и mssql: Поведение их очень и очень схоже. Практически один в один.
Anatoly Podgoretsky (2008-09-03 16:59:00) [5]> MsGuns (03.09.2008 15:48:12) [12]
С помощью прямого компонента TAdoCommand
Palladin (2008-09-03 16:55:00) [6]А для всех, кто корректно возвращает в OLEDB драйвере, значение Affected верно. но есть одно но, не будет работать в большинстве случаев при CursorLocation=clUseServer и еще пары настроек... в общем практически та же ситуация, что и с RowCount...
MsGuns (2008-09-03 16:52:00) [7]>clickmaker © (03.09.08 16:17) [15]
>Palladin © (03.09.08 16:36) [16]
Действительно. Самое интерсное, что я это и сам когда-то делал. Но забыл ;))
Спасибо
ЗЫ. Для акцеса это также верно ?
clickmaker (2008-09-03 16:44:00) [8]а почему бы сначала не вводить в Edit количество удаляемых записей, а потом уже удалять?
тогда и возвращать ничего не придется
Сергей М. (2008-09-03 16:42:00) [9]А автор, видимо, хотел увидить нечто вроде
Query.SQL.Text := 'DELETE FROM TABLE THEN SELECT DELETEDCOUNT FROM TABLE INTO EDIT1';
))
Palladin (2008-09-03 16:36:00) [10]
> MsGuns © (03.09.08 15:55) [14]
ADODB.pas, TADOQuery.ExecSQL, TADOQuery.Open :)
подробней некуда :)
clickmaker (2008-09-03 16:17:00) [11]delete from table
select @@rowcount
или
delete from table
select @RowsAffectedOutParam = @@rowcount
св-во RowsAffected может не сработать, если в запросе (в хранимке) стоит set nocount on
это все для MS SQL
MsGuns (2008-09-03 15:55:00) [12]>Palladin © (03.09.08 15:52) [13]
>у Execute возвращаемый параметр
Поподробнее, пожалуйста, а то у меня не выходит почему-то ;)
Palladin (2008-09-03 15:52:00) [13]
> MsGuns © (03.09.08 15:48) [12]
у Execute возвращаемый параметр... просто с TADOQuery удобней...
MsGuns (2008-09-03 15:48:00) [14]>Anatoly Podgoretsky © (03.09.08 13:50) [9]
>TADOQuery в топку. Пусть привыкает работать без костылей.
Не возражаю при условии что ты мне покажешь как можно получить RowAffects без этого "костыля" ;)
Palladin (2008-09-03 13:56:00) [15]а у меня вообще ощущения полного незнания SQL аффтором :)
Anatoly Podgoretsky (2008-09-03 13:50:00) [16]> Правильный$Вася (03.09.2008 13:45:08) [8]
Это его проблема, что ведет себя как партизан.
Anatoly Podgoretsky (2008-09-03 13:50:00) [17]> Palladin (03.09.2008 13:43:07) [7]
TADOQuery в топку. Пусть привыкает работать без костылей.
Правильный$Вася (2008-09-03 13:45:00) [18]
> есть RowAffected, если что...
отрабатывает не на всех SQL-серверах, т.к. не все они поддерживаюттакие фичи
Palladin (2008-09-03 13:43:00) [19]да и у TADOQuery есть RowAffected, если что...
Vlad Oshin (2008-09-03 13:40:00) [20]
> Сначала Select count по условию
и тут вставили еще запись..
> потом Delete по условию