![]() |
|
Модераторы: Akina |
![]()
|
|
| Medved |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: нет Всего: 154 |
Вот быстренько набросал тестовой примерчик, где я создаю таблицы и ХП:
Вот выполняю:
При вставке первой записи вновь созданную таблицу, ISNULL возвращает NULL, хотя по идее должен 0. MSSQL2000. -------------------- |
||||
|
|||||
| Medved |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: нет Всего: 154 |
Если заменить:
На:
То все работает как надо, но мне хотелось бы более красивого решения. -------------------- |
||||
|
|||||
| Euclid |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 26.10.2004 Репутация: 1 Всего: 1 |
Цитита
CREATE PROCEDURE [up_members];1 @out_id [int] OUTPUT ,@in_msname [varchar] (255) AS SET SELECT @out_id = ISNULL(@@IDENTITY,0) + 1 FROM members SET INSERT members (msname) VALUES (@in_msname) GO Судя по тексту вначале SET SELECT @out_id = ISNULL(@@IDENTITY,0) + 1 FROM members а потом вставка новой записи INSERT members (msname) VALUES (@in_msname) то есть для строчки: SET SELECT @out_id = ISNULL(@@IDENTITY,0) + 1 FROM members в таблице members еше нет ни одной записи, это значит, что запрос вообще не обрабатывается и переменной @out_id ничего не присваивается, то есть она остается NULL, и это не зависит никака от того, что написано после знака = Это типичная ситуация declare @v int ( тип любой ) SET @v = isnull(что-нибудь, 0) from TABLE where.... если записи с выбранным условием отсутсвуют, то isnull просто не вызывается и у @v остается значение, которое было до строчки SET, в данном случае NULL |
|||
|
||||
![]()
|
| Правила форума "MS SQL" | |
|
|
Запрещается! Публиковать ссылки и обсуждать взлом чего бы то ни было.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS SQL Server | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |