Форум: "Базы";
Текущий архив: 2005.11.13;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.035 c