Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Microsoft SQL Server и RAISERROR [D7, MSSQL]


Страницы:   1 2

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. А нафига какие-то действия в хп после выполнения выходного селекта? Вот хоть убей меня - не пойму.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо