dbo.fnList
является табличной функцией.Вы вызываете это внутри себя, как если бы это была скалярная функция.то есть
SELECT dbo.fnList(Results.id, Results.parent)
, в отличие от правильного синтаксиса:
SELECT * FROM dbo.fnList(Results.id, Results.parent)
Конечно, вышеприведенное не будет работать как Results
сам по себе псевдоним таблицы, а не целое число.Таким образом, вам понадобится курсор для циклического просмотра результатов и вызова dbo.fnList.
Даже если вы сможете исправить синтаксис, тем не менее, несомненно, вы быстро столкнетесь с проблемами с максимальным уровнем вложенности 32?
Пользовательские функции могут быть вложенными;то есть одна пользовательская функция может вызывать другую.Уровень вложенности увеличивается, когда вызываемая функция начинает выполнение, и уменьшается, когда вызываемая функция заканчивает выполнение.Пользовательские функции могут быть вложены до 32 уровней.Превышение максимальных уровней вложенности приводит к сбою всей цепочки вызывающих функций.
Похоже, вам придется либо добавить много циклов в функцию, либо переосмыслить решение.