Главная страница
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.036 c
2-1140361582
Volf_555
2006-02-19 18:06
2006.03.05
Как перевести цвет из TColorBox в строку?


3-1136889969
moteus
2006-01-10 13:46
2006.03.05
Проблема с потерей коннекта в ODAC


15-1139490644
Kerk
2006-02-09 16:10
2006.03.05
Собственно, о геморрое...


15-1139408697
SPeller
2006-02-08 17:24
2006.03.05
Ты из приморья, если...


1-1138477891
Gnobobel
2006-01-28 22:51
2006.03.05
Клонирование TPanel с содержимым.