Объяснюсь чуть подробней, штука вот какая (к примеру):
- Код: Выделить всё
create procedure sample
returns (someData integer)
as declare variable Query varchar(100);
declare variable FirstResult Integer;
declare variable QueryNext varchar(100);
declare variable NextResult Integer;
begin
Query='select id from имя_не_существующей_таблицы';
EXECUTE STATEMENT Query into :FirstResult;
/* тут мы получаем ошибку
Undefined name. Dynamic SQL Error.
SQL error code = бла-бла-бла.
*/
QueryNext='select data from NextTable where id=' || :FirstResult;
for EXECUTE STATEMENT QueryNext into :NextResult
do begin
someData=someData+1521;
suspend;
end;
end
Естественно выполнять код в QueryNext уже не имеет смысла, потому как выполнение Query завершилось полнейшим крахом! Так вот, как отловить ошибку при выполнении
EXECUTE STATEMENT Query into :FirstResult;, что бы я мог (к примеру) в условии IF решать - подготавливать ли мне выполнение
QueryNext или же аварийно завершить всю процедуру целиком передав в
returns (someData integer) какой нибудь
null. В FB v2.1 Есть какой нибудь аналог вот этого:
- Код: Выделить всё
try{
//Run some code here
}
catch(err){
//Handle errors here
}