Chciałem przechwycić wyjątek z MSSQL, w związku z tym napisalem kawałek procedury który generuje wyjątek
alter PROCEDURE dbo.DodajTest
@cos int
AS
BEGIN
declare @r varchar(500)
begin transaction
begin try
insert into dbo.Tabelka(id) values('dupa');
commit transaction
end try
begin catch
set @r = 'Błąd #' + cast(ERROR_NUMBER() as varchar(10)) + ' w procedurze ' + ERROR_PROCEDURE() + CHAR(13) + CHAR(10)
+ 'Treść błędu - ' + ERROR_MESSAGE();
raiserror(@r,10,1);
rollback transaction;
return -1;
end catch
END
Przy wywołaniu z Management Studio dostaje piękny komunikat błędu
exec Import.dbo.dodajTest 20
Teraz chciałbym w delphi uzyskać to samo, niestety poniższy kod nie przechwytuje wyjątku
qX.SQL.Clear; //qX = TADOQuery
qX.SQL.Add('exec Import.dbo.DodajTest 20');
try
qX.ExecSQL;
except
on E: Exception do
ShowMessage(E.Message);
end;
Co robię nie tak?