Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.13;
Скачать: CL | DM;

Вниз

Raiserror в вызове ХП   Найти похожие ветки 

 
Ega23 ©   (2005-09-30 13:37) [0]

Нету тестовой базы под рукой, чтобы проверить...  :-(
Если я вызываю в клиенте ХП1, а она, в свою очередь, вызывает внутри себя ХП2, и в ХП2 по какому-то условию происходит генерация exception через RAISERROR, то отловит ли клиент это исключение? Или надо организовать проверку выполнения ХП2 внутри ХП1 и также генерить исключение?


 
Nikolay M. ©   (2005-09-30 13:46) [1]

Ты же сам недавно участвовал в ветке на эту тему?
Если не 2005-й, то отловит. Как ХП1 будет организовывать проверку исключения? До 2000-го включительно такой возможности нет.


 
Ega23 ©   (2005-09-30 13:54) [2]


> Как ХП1 будет организовывать проверку исключения?


Как-то так:

BEGIN TRANSACTION TranClassDel;

 -- Сначала удалим ClassFields

 exec S_RTTIProc @ActNam="ClassFields.Del", @CLSID=@CLSID, @SelOut=0;
 if @@Error<>0 GoTo ClassesDelRollbackTran;

 -- Теперь удалим ClassMethods

 exec S_RTTIProc @ActNam="ClassMethods.DEL", @CLSID=@CLSID, @SelOut=0;
 if @@Error<>0 GoTo ClassesDelRollbackTran;

  -- Удаляем ClassStates
 exec S_RTTIProc @ActNam="ClassStates.DEL", @CLSID=@CLSID, @SelOut=0;
 if @@Error<>0 GoTo ClassesDelRollbackTran;

 Delete Classes where CLSID=@CLSID;
 if @@Error<>0 GoTo ClassesDelRollbackTran;

 Select @Result=@CLSID;

ClassesDelCommitTran:
 begin
 if @Debug<>0 print("COMMIT TRANSACTION");
 COMMIT TRANSACTION TranClassDel;

 if @SelOut=1
  begin
  Set NoCount OFF;
  Select Result=@Result;
  end;

 Goto Fin;
 end;

ClassesDelRollbackTran:
 begin
 if @Debug<>0 print("ROLLBACK TRANSACTION");
 ROLLBACK TRANSACTION TranClassDel;
 RaisError("CLASSES.DEL>  ",16,1);
 Return(-1);
 end;

 Goto Fin;


Весь вопрос в следующем: если в секции  ClassesDelRollbackTran RaisError не делать, то поймает-ли клиент исключение, возникшее, например, в удалении ClassStates? Сильно подозреваю, что увидит, но хочется знать наверняка. От этого зависит идеология дальнейшей разработки.

З.Ы. MS SQL 7.0 и MS SQL 2000.



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

Текущий архив: 2005.11.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.051 c
14-1130188437
Piter
2005-10-25 01:13
2005.11.13
Как удалить сервис?


14-1130112434
хАЦКЕРЕНОК
2005-10-24 04:07
2005.11.13
хАЦКЕРЕНОК


3-1127992040
guesst
2005-09-29 15:07
2005.11.13
Log файл


11-1110967338
Свирепый
2005-03-16 13:02
2005.11.13
Как устаналивать KOL MCK на С++ Builder 6


2-1130054251
Yegorchic
2005-10-23 11:57
2005.11.13
Работа с памятью