У меня есть ситуация, когда я хочу, чтобы сохраненный процесс возвращал таблицу, которая вызывает себя рекурсивно как часть своего вычисления.
К сожалению, SQL Server не имеет ничего этого и выдает ошибку в связи с невозможностью объявить уже существующий курсор и невозможностью вложить и вставить выражение exec.
Могу ли я обойти некоторые из этих проблем с помощью функции?Есть ли другой лучший способ сделать это?
Расчет по своей природе рекурсивный, поэтому, насколько я могу судить, обойтись без этого не удастся с помощью объединений.
РЕДАКТИРОВАТЬ: для уточнения фактического расчета, поскольку код усложняется другими вещами и может усложнить дело -
предположим, что в таблице A есть столбцы (containerID, objID, objType, weight) и таблица Bимеет столбцы (itemID, значение).
objType в таблице A сообщает, является ли objID в таблице A контейнером (снова в таблице A) или есть и itemID из таблицы B.
(containerID, objID) является первичным ключом в таблице A, так же как и itemID в таблице B.
Обычно в контейнере содержатся от десятков до сотен элементов или других контейнеров.Надеюсь, глубина рекурсии не превышает дюжины уровней.(догадываясь) Расчет должен получить средневзвешенное значение.