Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.05;
Скачать: CL | DM;

Вниз

Обработка ошибки от 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.027 c
11-1120902582
SergeyV
2005-07-09 13:49
2006.03.05
Jpeg в KOL


15-1139392403
Kerk
2006-02-08 12:53
2006.03.05
Статистика: десятка языков Интернета


2-1139992973
aleshap
2006-02-15 11:42
2006.03.05
EOutOfResources


2-1139900998
r.o.o.t
2006-02-14 10:09
2006.03.05
Непонятки в трехзвенке


15-1139729042
PARUS
2006-02-12 10:24
2006.03.05
Частота.