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

Откуда:
Сообщений: 102
Привет всем.
Написал функцию
--CREATE
ALTER
FUNCTION dbo.fn_GetHouseNumbers (@code VARCHAR(17))
RETURNS VARCHAR(1000)
AS
BEGIN

DECLARE @result VARCHAR(1000)
SET @result = ''

SELECT @result = @result + HouseNo + UPPER(BuildNo) + ','
FROM dbo.tb_TmpForUSZN
WHERE StreetCode = @code
ORDER BY RIGHT('0000000' + HouseNo, 7)

IF LEN(@result) > 0
BEGIN
	SET @result = SUBSTRING(@result, 1, LEN(@result) - 1)
END
ELSE
BEGIN
	SET @result = ''
END

RETURN @result

END

Функция для задачи собирания значений столбца в строку.
Проверял на двух серверах - все работает, возвращает строку. Разослал в филиалы - пишут, что возвращает только последнее значение. Разница в серверах в том, что у меня это работает на SQL Server 2005, а в филиалах SQL Server 2000. Подскажите, что не так?
2 июн 11, 07:48    [10749884]     Ответить | Цитировать Сообщить модератору
 Re: Работа функции на разных версиях SQL Server  [new]
rpv
Member

Откуда:
Сообщений: 102
Как выяснил, если убрать строку:
ORDER BY RIGHT('0000000' + HouseNo, 7)
то и на SQL Server 2000 все правильно отрабатывает. Так что проблема вроде решилась. Но может кто расскажет почему так?
2 июн 11, 08:40    [10749963]     Ответить | Цитировать Сообщить модератору
 Re: Работа функции на разных версиях SQL Server  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
PRB: Execution Plan and Results of Aggregate Concatenation Queries Depend Upon Expression Location
2 июн 11, 09:54    [10750357]     Ответить | Цитировать Сообщить модератору
 Re: Работа функции на разных версиях SQL Server  [new]
rpv
Member

Откуда:
Сообщений: 102
Спасибо! Не знал о таком.
2 июн 11, 11:18    [10751015]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить