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

Откуда:
Сообщений: 686
С чем это может быть связано?

Запрос - вот в таком виде отлично компилируется и выполняется на 2017 сервере:
;WITH child_to_parents AS (
  SELECT a.AOGUID, a.OFFNAME, a.OKATO, a.SHORTNAME, a.AOLEVEL, cast(a.AOGUID as varchar(8000)) FULLPATH 
  FROM [dbo].[cls_FIAS] a
      WHERE AOLEVEL = 1 and REGIONCODE = 62
  UNION ALL
  SELECT a.AOGUID, a.OFFNAME, a.OKATO, a.SHORTNAME, a.AOLEVEL, Concat(b.FULLPATH, ',', cast(a.AOGUID as varchar(8000)))  FULLPATH  FROM  
	  [dbo].[cls_FIAS] a inner join child_to_parents b on a.parentguid = b.aoguid
      Where a.livestatus = 1
)
Select * from child_to_parents 


А вот на 2014 - только в таком виде:
;WITH child_to_parents AS (
  SELECT a.AOGUID, a.OFFNAME, a.OKATO, a.SHORTNAME, a.AOLEVEL, cast(a.AOGUID as varchar(8000)) FULLPATH 
  FROM [dbo].[cls_FIAS] a
      WHERE AOLEVEL = 1 and REGIONCODE = 62
  UNION ALL
  SELECT a.AOGUID, a.OFFNAME, a.OKATO, a.SHORTNAME, a.AOLEVEL, cast(Concat(b.FULLPATH, ',', cast(a.AOGUID as varchar(8000))) as varchar(8000)) FULLPATH  FROM  
	  [dbo].[cls_FIAS] a inner join child_to_parents b on a.parentguid = b.aoguid
      Where a.livestatus = 1
)
Select * from child_to_parents 

А в первом случае - выдает:
Types don't match between the anchor and the recursive part in column "FULLPATH" of recursive query "child_to_parents".
Т.е. Concat(b.FULLPATH, ',', cast(a.AOGUID as varchar(8000)) выдает что-то, а не varchar(8000).
Интересно, почему?
Еще более интересно, почему в 2017 то прокатывает?!
10 сен 19, 09:50    [21967473]     Ответить | Цитировать Сообщить модератору
 Re: Нашел различия в компиляции запроса между 2014 и 2017 серверами  [new]
iiyama
Member

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

ИМХО, мне больше нравится поведение 2014, где явно требуется приведение типов, поскольку никто не сможет гарантировать, что после установки какого-нибудь сервис-пака поведение изменится
10 сен 19, 11:34    [21967546]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить