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

Откуда:
Сообщений: 204
Блог
Есть функция, которая по ID-ку ищет дату в справочнике и, если не находит, возвращает текущую:


CREATE FUNCTION [dbo].[CLOSEDATE](@ID int)
RETURNS datetime
AS
  BEGIN
     DECLARE @closed int;
     DECLARE @result datetime;

	 SELECT @result = created_on from dbo.statuses_history
			WHERE journalized_id = @ID and new_status = 'Закрыто';
	 
	 IF @result IS NULL	   
	    SELECT @result = GETDATE()     
	      		
	 RETURN (DATEADD(dd, 0, DATEDIFF(dd, 0, @result)))
  END;


Следующие запросы возвращают корректную дату из справочника:

select dbo.closedate(4170)
select dbo.closedate(id) from issues where id = 4170


А когда делаю UPDATE, то поле изменяется текущей датой:

UPDATE issues SET created_on = dbo.CloseDate(id)  WHERE issues.id = 4170


Такое ощущение, что в функцию не передается ID. Подскажите, пожалуйста, что нужно поправить ?
15 дек 11, 12:20    [11770090]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поле значением функции  [new]
demas
Member

Откуда:
Сообщений: 204
Блог
Точнее, вот такой код правильно изменяет запись:

DECLARE @d AS datetime
select @d = dbo.closedate(4170)
UPDATE issues SET created_on = @d  WHERE issues.id = 4170


А вот такой - нет:

UPDATE issues SET created_on = dbo.CloseDate(id)  WHERE issues.id = 4170


Почему они вообще отрабатывают по-разному ?
15 дек 11, 12:29    [11770168]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поле значением функции  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
demas,

а зачем вообще там функция нужна? Для тормоза?
15 дек 11, 12:32    [11770194]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поле значением функции  [new]
demas
Member

Откуда:
Сообщений: 204
Блог
Предлагаешь переписать одним запросом?
Функция все равно уже была - она на клиенте активно используется. Но, все равно, не понятно, почему результаты разные.
15 дек 11, 12:37    [11770222]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поле значением функции  [new]
_ч_
Member

Откуда:
Сообщений: 1446
demas,

А какой результат в первом и во втором случае?
15 дек 11, 13:50    [11770859]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поле значением функции  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
demas,

вообще-то, в функции ещё и new_status на 'Закрыто' проверяется...
15 дек 11, 13:57    [11770921]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить