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

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

Код: 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
Raiserror не генерит исключение
    #32185831
Фотография KirillovA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
raiserror ('приехали ...', 16, 1)
...
Рейтинг: 0 / 0
Raiserror не генерит исключение
    #32185838
Фотография KirillovA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и ваащето раизеррор тебе не поможет - т.к. идет возврат датасета из процры...
...
Рейтинг: 0 / 0
Raiserror не генерит исключение
    #32185840
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так как только клиент получил набор данных из процедуры, он посчитал, что все ок, и плевать хотел на твой raiserror.
...
Рейтинг: 0 / 0
Raiserror не генерит исключение
    #32185843
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вот интерестно ...
а что в таком случае делать ?
...
Рейтинг: 0 / 0
Raiserror не генерит исключение
    #32185853
Фотография KirillovA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ващето при таком пофигизме просто
SET XACT_ABORT OFF в критические места
SET XACT_ABORT ON в некритичном месте )))
тока нахера раизы после селектов - уму не приложу - клиент получает флаг конца набора данных и забивает на все ...
...
Рейтинг: 0 / 0
Raiserror не генерит исключение
    #32185854
Фотография KirillovA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так что при
---
select *
from table1
select *
from table2
---
в одной SP
клиент получит первый набор и проматерится что ему пришел множественный наборданных ...
...
Рейтинг: 0 / 0
Raiserror не генерит исключение
    #32185862
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2KirillovA
SET XACT_ABORT OFF в критические места
SET XACT_ABORT ON в некритичном месте )))

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

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


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