Форум: "Базы";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];
ВнизОбработка ошибки от SQL Найти похожие ветки
← →
RKonst (2006-01-12 18:22) [0]Имеется хранимая процедура:
CREATE PROCEDURE _test_Yury AS
SET ANSI_PADDING ON
select convert(float,"f")
GO
и код :try
ADOStoredProc2.ExecProc;
except
on E:Exception do ShowMessage(E.Message);
end;
Результат - выдается сообщение об ошибке.Изменяем процедуру:
CREATE PROCEDURE _test_Yury AS
SET ANSI_PADDING ON
select 7 -- добавили строку
select convert(float,"f")
GO
Результат - сообщения об ошибке нет
← →
Nikolay M. © (2006-01-12 18:32) [1]Во втором варианте добавь в код
ADOStoredProc2.NextRecordset
← →
RKonst (2006-01-12 18:54) [2]Хорошо, конечно. Но если в SP SQL-предложений штук 50?
← →
RKonst (2006-01-12 19:04) [3]И создаются они динамически и вызывают другие SP ?
← →
Ega23 © (2006-01-12 19:40) [4]
>
> Изменяем процедуру:
> CREATE PROCEDURE _test_Yury AS
> SET ANSI_PADDING ON
> select 7 -- добавили строку
> select convert(float,"f")
> GO
>
> Результат - сообщения об ошибке нет
>
Сделай так:
CREATE PROCEDURE _test_Yury AS
SET ANSI_PADDING ON
Set NoCount ON
select 7 -- добавили строку
Select 8
Select getdate()
Select @@IDENTITY
.........
Set NoCount OFF
select convert(float,"f")
GO
И будет тебе щщастье
← →
Nikolay M. © (2006-01-12 19:58) [5]
> Но если в SP SQL-предложений штук 50?
Да хоть 50 тысяч. И все возвращают НД? Тогда, имхо, это неправильная ХП.
Кстати, Олег правильно сказал, стоить взять за правило добавлять в начало ХПSET NOCOUNT ON
. Хотя к сути проблемы это, кмк, мало имеет отношения.
← →
RKonst (2006-01-13 14:03) [6]
> И будет тебе щщастье
Щщастье не наступило
← →
Fay © (2006-01-13 14:39) [7]@@error, raiserror
← →
Ega23 © (2006-01-13 14:53) [8]
> Щщастье не наступило
>
Короче, что тебе непонятно?
← →
RKonst (2006-01-13 15:50) [9]Не понятно, почему Дельфи не получает сообщение об ошибке от SQL
← →
Ega23 © (2006-01-13 16:11) [10]
> Не понятно, почему Дельфи не получает сообщение об ошибке
> от SQL
Процедура должна либо вернуть число (Return(N), где N - int), либо набор данных (Select что-то from что-то). Если у тебя по ходу выполнения процедуры идёт несколько селектов, нужных тебе по логике работы, но совершенно не нужных для выдачи их "в свет", то можешь воспользоваться директивой Set NoCount ON/OFF.
← →
sniknik © (2006-01-13 16:12) [11]> Не понятно, почему Дельфи не получает сообщение об ошибке от SQL
она получает. для каждого рекордсета свое. см. Nikolay M. © (12.01.06 18:32) [1]
← →
sniknik © (2006-01-13 16:14) [12]> то можешь воспользоваться директивой Set NoCount ON/OFF.
этим отсекаются только "пустышки", от команд типа insert/update, на select не действует.
← →
Ega23 © (2006-01-13 16:22) [13]
> этим отсекаются только "пустышки", от команд типа insert/update,
> на select не действует.
Гляди-ка, действительно!
Блин, не знал...
← →
RKonst (2006-01-13 17:22) [14]ОК. Разобрался. Всем спасибо.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.012 c