Вниз
Скачать: CL | DM;

Stream and AdoCommand   Найти похожие ветки 

← →
Ega23 ©   (2008-07-28 12:43) [40]


> Спасибо за помощь, думаю не последний раз написал ;)


Не за что, удачи!


← →
Anatoly Podgoretsky ©   (2008-07-28 13:01) [41]

> sniknik  (28.07.2008 12:14:36)  [36]

На размере ехе скажется как раз один AdoCommand - не в лучшую сторону конечно.


← →
Viod ©   (2008-07-29 10:05) [42]

Ко вчерашнему спрору о проверке внутри процедуры или в делфи:
Допустим хранимая процедура получает параметром идентификатор записи. Смотрит есть ли эта запись if EXISTS(SELECT... WHERE Idn=@idn) и удаляет запись и возвращает 0. Если записи нет, то возвращает -1.
Как мне в этом случае оставить проверку на стороне приложения? В смысле как это сделать более-менее коротко и красиво?


← →
Ega23 ©   (2008-07-29 10:16) [43]

Способ 1.
Declare @X int;
Select @X=exec S_MyProc @Id=18;
Select Result=@X;


Способ 2.


CREATE PROCEDURE s_MyProc

 @ID int =-1,
 @SelOut int = 1,
 @Debug int =0
As
 Declare @result int;

if Exists (Select ... from ... where id=@ID)
begin
 Delete from ... where ID=@ID
 Set @Result=0
end
else
 Set Result=-1;

if @SelOut=1
 Select Result=@result;

return(@result);

GO


Вызов второго варианта.
Если хочешь получить результат, то через TADODataSet.Open:
exec S_MyProc @ID=...
Если не хочешь получить результат, то через TADOCommand.Execute:
exec S_MyProc @ID=..., @SelOut=0


← →
Viod ©   (2008-07-29 12:54) [44]

Спс.


← →
sniknik ©   (2008-07-29 13:32) [45]

> удаляет запись и возвращает 0. Если записи нет, то возвращает -1.
способ 3... правильный. (бредите вы этими процедурами чтоли?)

- простейший запрос в ADOCommand1, внесенный в десигне, вида
delete from ... where ID=:ID
 
выполнение
var
 RecAff: integer;
begin
 ADOCommand1.Parameters.ParamByName("ID").Value:= ...;
 ADOCommand1.Execute(RecAff);
 if RecAff > 0
   then //есть запись, а может и не одна (что подразумевает ID?)
   else //нет записей
end;


все. и зачем сложности с процедурами? не нужна она тут.



Страницы: 1 2 вся ветка

Скачать: CL | DM;



Память: 0.53 MB
Время: 0.019 c
4-1207309857
DiamondShark
2008-04-04 15:50
2009.03.29
Как узнать, что приложение запущено в терминальной сессии?


15-1232696519
desc
2009-01-23 10:41
2009.03.29
Склеить видео файлы


2-1233477208
jonin
2009-02-01 11:33
2009.03.29
загрузка процессора


1-1208160423
incm
2008-04-14 12:07
2009.03.29
Как в TreeView убрать у итемсов пустое место для картинки


2-1233138545
Oleg_teacher
2009-01-28 13:29
2009.03.29
Узнать могу ли я создать файл в папке




   Наверх