![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Microsoft SQL Server и RAISERROR [D7, MSSQL]
alexnmsk © (2008-11-27 10:16:00)Добрый день, уважаемые мастера. Вопрос к знатокам MSSQL.
Имеется хранимая процедура на сервере. Для простоты сократим код до такого:
SELECT * FROM MyTable
RAISERROR('Ошибка',16,1)
В этом случае в клиентской программе исключения не возникает. Изменим процедуру:
RAISERROR('Ошибка',16,1)
SELECT * FROM MyTable
Теперь все нормально. Подключаюсь к серверу через ADO. Проблема, как я понимаю, известная :
http://www.delphisources.ru/pages/faq/base/bde_sql_links_questions.html
см. пункт 9.
Теперь вопрос - кто-нибудь может обойти эту проблему? Можно ли сбросить результаты внутри ХП?
alexnmsk (2008-11-27 11:09:00) [21]Ega23, спасибо! При открытии следующего RecordSet с ошибкой - вылетает исключение.
> Моё глубокое ИМХО: я ещё пока не встречал задачи, где в
> хранимке raiserror был нужен.
ИМХО обычное дело - например при откате транзакции выдать клиенту сообщение о неудавшейся операции
Ega23 (2008-11-27 10:52:00) [22]
> Это для простоты так написал. Тоже самое при любом операторе
> UPDATE, DELETE и т.п.
А ты Set NoCount On включи.
Моё глубокое ИМХО: я ещё пока не встречал задачи, где в хранимке raiserror был нужен.
alexnmsk (2008-11-27 10:26:00) [23]
> 2. А нафига какие-то действия в хп после выполнения выходного
> селекта? Вот хоть убей меня - не пойму.
Это для простоты так написал. Тоже самое при любом операторе UPDATE, DELETE и т.п.
> 1. Проверь все рекордсеты, которые тебе пришли. Первым твой
> селект пришёл, а вот вторым, скорее всего - error.
А почему исключения не возникает?
Ega23 (2008-11-27 10:21:00) [24]
> В этом случае в клиентской программе исключения не возникает.
1. Проверь все рекордсеты, которые тебе пришли. Первым твой селект пришёл, а вот вторым, скорее всего - error.
2. А нафига какие-то действия в хп после выполнения выходного селекта? Вот хоть убей меня - не пойму.