Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Нашел различия в компиляции запроса между 2014 и 2017 серверами / 2 сообщений из 2, страница 1 из 1
10.09.2019, 09:50
    #39859701
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нашел различия в компиляции запроса между 2014 и 2017 серверами
С чем это может быть связано?

Запрос - вот в таком виде отлично компилируется и выполняется на 2017 сервере:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
;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 - только в таком виде:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
;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 то прокатывает?!
...
Рейтинг: 0 / 0
10.09.2019, 11:34
    #39859741
iiyama
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нашел различия в компиляции запроса между 2014 и 2017 серверами
uaggster,

ИМХО, мне больше нравится поведение 2014, где явно требуется приведение типов, поскольку никто не сможет гарантировать, что после установки какого-нибудь сервис-пака поведение изменится
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Нашел различия в компиляции запроса между 2014 и 2017 серверами / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]