Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Про newid()  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2791
Встретил в коде следующий фрагмент:
SET @myid = NEWID()
  IF @myid IS NULL 
  BEGIN
    SET @error_msg = 'Ошибка получения гуида'
    GOTO L_ERROR
  END
Никто не знает: имеет ли это под собой какое-либо основание?
11 сен 09, 09:47    [7645892]     Ответить | Цитировать Сообщить модератору
 Re: Про newid()  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Нууууу... Вдрук функция NEWID() поломалась...
11 сен 09, 09:54    [7645932]     Ответить | Цитировать Сообщить модератору
 Re: Про newid()  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Prolog, да писавший код знает про оператор безусловного перехода :))
11 сен 09, 09:56    [7645941]     Ответить | Цитировать Сообщить модератору
 Re: Про newid()  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Просто писал очень педантичный, скрупулёзный человек,
желающий делать всевозможные проверки для гарантированно корректного использования переменной!

Что говорить, я сам почти такой. Жить, конечно, с этим трудно...

P.S. А представьте, что придёт день, когда запрос вернёт-таки сообщение "Ошибка получения гуида"!
Вот тогда-то и настанет момент истины! Скажут, что писал гений.
11 сен 09, 10:28    [7646114]     Ответить | Цитировать Сообщить модератору
 Re: Про newid()  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
По настоящему что то можно сказать только посмотрев как newid() формирует гуид из MAC адреса и счётчика ЦП.

--------------------------------------------------------------
Дьявол кроется в деталях.
11 сен 09, 10:38    [7646171]     Ответить | Цитировать Сообщить модератору
 Re: Про newid()  [new]
Glory
Member

Откуда:
Сообщений: 104760
iap
Просто писал очень педантичный, скрупулёзный человек,
желающий делать всевозможные проверки для гарантированно корректного использования переменной!

+1
Сегодня между SET и IF нет команд, а завтра кто-нибудь навставляет туда операций над @myid и привет

Или просто все вызовы функций сделаны по шаблону
11 сен 09, 10:39    [7646173]     Ответить | Цитировать Сообщить модератору
 Re: Про newid()  [new]
Crimean
Member

Откуда:
Сообщений: 13148
Prolog
Встретил в коде следующий фрагмент:
SET @myid = NEWID()
  IF @myid IS NULL 
  BEGIN
    SET @error_msg = 'Ошибка получения гуида'
    GOTO L_ERROR
  END
Никто не знает: имеет ли это под собой какое-либо основание?


надо SET заменить на SELECT, после чего еще @@error + @@rowcount проверять (а вдруг не присвоится или ошибки будут при присвоении!), а все это еще и в TRY обернуть на всякий случай, а то мало ли!
11 сен 09, 10:52    [7646247]     Ответить | Цитировать Сообщить модератору
 Re: Про newid()  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2791
Подводим итог: никто не встречался с таким случаем, когда newid() возвращала null.
11 сен 09, 11:07    [7646343]     Ответить | Цитировать Сообщить модератору
 Re: Про newid()  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Prolog
Подводим итог: никто не встречался с таким случаем, когда newid() возвращала null.
Отчегоже...
declare @myid uniqueidentifier;

select
	@myid = newid()
where 1 = 0;

select @myid;
11 сен 09, 11:13    [7646386]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить