Обработать ошибку выполнения EXECUTE STATEMENT
-
- Сообщения: 37
- Зарегистрирован: 18 янв 2007, 01:05
Обработать ошибку выполнения EXECUTE STATEMENT
Добрый день,
подскажите пожалуйста - как обработать результат выполнения EXECUTE STATEMENT в случае, если что то пошло не так (к примеру генерированный код оказался с ошибкой или т.п.). И буду очень признателен за пример реализации! Отлавливать сам код ошибки не нужно, задача в том, что бы узнать - успешно выполнился EXECUTE STATEMENT или был CRASH.
подскажите пожалуйста - как обработать результат выполнения EXECUTE STATEMENT в случае, если что то пошло не так (к примеру генерированный код оказался с ошибкой или т.п.). И буду очень признателен за пример реализации! Отлавливать сам код ошибки не нужно, задача в том, что бы узнать - успешно выполнился EXECUTE STATEMENT или был CRASH.
Re: Обработать ошибку выполнения EXECUTE STATEMENT
Вопрос не понят. Если будет исключение, то сервер тебя об этом обязательно сообщит, молчать не будет.
Или вопрос в том, как его поймать? Тогда - как обычно, when...
Или вопрос в том, как его поймать? Тогда - как обычно, when...
-
- Сообщения: 37
- Зарегистрирован: 18 янв 2007, 01:05
Re: Обработать ошибку выполнения EXECUTE STATEMENT
Объяснюсь чуть подробней, штука вот какая (к примеру):
Естественно выполнять код в QueryNext уже не имеет смысла, потому как выполнение Query завершилось полнейшим крахом! Так вот, как отловить ошибку при выполнении EXECUTE STATEMENT Query into :FirstResult;, что бы я мог (к примеру) в условии IF решать - подготавливать ли мне выполнение QueryNext или же аварийно завершить всю процедуру целиком передав в returns (someData integer) какой нибудь null. В FB v2.1 Есть какой нибудь аналог вот этого:
Код: Выделить всё
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
Код: Выделить всё
try{
//Run some code here
}
catch(err){
//Handle errors here
}
Re: Обработать ошибку выполнения EXECUTE STATEMENT
см. обработку ошибок по WHEN. Но вообще, конечно, жуть.
-
- Сообщения: 37
- Зарегистрирован: 18 янв 2007, 01:05
Re: Обработать ошибку выполнения EXECUTE STATEMENT
Благодарю, разобрался:
Помогло, большое спасибо!
P.S. Жуть не то слово, ...это для двух процедур генерируют строку формата JSON на основании результатов выполнения другой процедуры или таблицы. Местами нужно бывает.
Код: Выделить всё
WHEN ANY DO EXIT; /* и т.п. */
P.S. Жуть не то слово, ...это для двух процедур генерируют строку формата JSON на основании результатов выполнения другой процедуры или таблицы. Местами нужно бывает.
-
- Сообщения: 1
- Зарегистрирован: 14 июл 2010, 15:57
crm система
Поддерживаю предыдущий ответ!
-
- Сообщения: 37
- Зарегистрирован: 18 янв 2007, 01:05
Re: Обработать ошибку выполнения EXECUTE STATEMENT
Спасибо, работает как часы