Вниз
Скачать: 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.52 MB
Время: 0.017 c
15-1232303736
Leonid Troyanovsky
2009-01-18 21:35
2009.03.29
Joe Bonamassa


2-1233746718
Asker
2009-02-04 14:25
2009.03.29
как завершить приложение


2-1233936849
CodeMaster
2009-02-06 19:14
2009.03.29
не могу перести на Delphi


15-1232830550
Unknown user
2009-01-24 23:55
2009.03.29
Delphi 2009 стоит ли переходить?


2-1233870991
НосокСудьбы
2009-02-06 00:56
2009.03.29
Как правильно реализовать...




   Наверх