Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Raiserror не генерит исключение / 13 сообщений из 13, страница 1 из 1
18.06.2003, 15:54
    #32185663
Alexei Petrakov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Raiserror не генерит исключение
Вызываю из программы на Delphi 6 хранимую процедуру (MS SQL Server 2000), в которой, в свою очередь, есть вызов функции Raiserror (генерация ошибки). При выполнении процедуры в программе генерится исключение (его инициирует вызов raiserror). Однако если в хранимой процедуре перед вызовом raiserror поставить вызов sp_executesql (системная хранимая процедура, осуществляет выполение димамического запроса), то никакого исключения в дельфовой программе не происходит, несмотря на последующий вызов raiserror (если в этой же процедуре вызов raiserror поставить впереди sp_executesql, то всё в порядке)!!!
Вышеописанный эффект происходит только с Дельфи. При написании приложения на .NET исключение генерится в любом случае.
(Из Дельфи процедура вызывается с помощью TStoredProc или TADOStoredProc).

Никто не знает, как это лечить?
Спасибо!
...
Рейтинг: 0 / 0
18.06.2003, 15:57
    #32185671
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Raiserror не генерит исключение
Не это ли?\r
\r
/topic/36205
...
Рейтинг: 0 / 0
18.06.2003, 16:49
    #32185750
Alexei Petrakov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Raiserror не генерит исключение
>Не это ли? \r
>/topic/36205\r
\r
Нет, к сожалению не помогло :((
...
Рейтинг: 0 / 0
18.06.2003, 16:55
    #32185765
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Raiserror не генерит исключение
Процедуру покажи.
...
Рейтинг: 0 / 0
18.06.2003, 17:28
    #32185827
Alexei Petrakov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Raiserror не генерит исключение
Вот процедура (вроде ничего хитрого нет):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
CREATE PROCEDURE [dbo].[Raise]
AS
	set nocount on
	declare @query nvarchar( 100 )
	select @query = N'select 1'
	exec sp_executesql @query
	raiserror('Test Error!',  18 ,  1 )
GO


Если поменять местами последнюю и предпоследнюю строки (или просто закомментировать предпоследнюю), то всё в порядке, исключение в программе на Delphi генерится.
...
Рейтинг: 0 / 0
18.06.2003, 17:29
    #32185831
KirillovA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Raiserror не генерит исключение
raiserror ('приехали ...', 16, 1)
...
Рейтинг: 0 / 0
18.06.2003, 17:31
    #32185838
KirillovA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Raiserror не генерит исключение
и ваащето раизеррор тебе не поможет - т.к. идет возврат датасета из процры...
...
Рейтинг: 0 / 0
18.06.2003, 17:33
    #32185840
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Raiserror не генерит исключение
Ну так как только клиент получил набор данных из процедуры, он посчитал, что все ок, и плевать хотел на твой raiserror.
...
Рейтинг: 0 / 0
18.06.2003, 17:34
    #32185843
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Raiserror не генерит исключение
а вот интерестно ...
а что в таком случае делать ?
...
Рейтинг: 0 / 0
18.06.2003, 17:40
    #32185853
KirillovA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Raiserror не генерит исключение
ващето при таком пофигизме просто
SET XACT_ABORT OFF в критические места
SET XACT_ABORT ON в некритичном месте )))
тока нахера раизы после селектов - уму не приложу - клиент получает флаг конца набора данных и забивает на все ...
...
Рейтинг: 0 / 0
18.06.2003, 17:42
    #32185854
KirillovA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Raiserror не генерит исключение
так что при
---
select *
from table1
select *
from table2
---
в одной SP
клиент получит первый набор и проматерится что ему пришел множественный наборданных ...
...
Рейтинг: 0 / 0
18.06.2003, 17:45
    #32185862
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Raiserror не генерит исключение
2KirillovA
SET XACT_ABORT OFF в критические места
SET XACT_ABORT ON в некритичном месте )))

а если не сложно то примерчик можно ?
что то недогоняю про енти критические и некр. места ...

не бей сильно за настырность
...
Рейтинг: 0 / 0
18.06.2003, 17:47
    #32185867
KirillovA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Raiserror не генерит исключение
а ты в bol погляди екзамплу ...
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Raiserror не генерит исключение / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]