SQL error Превышен максимальный уровень вложенности хранимой процедуры, функции, триггера или представления - PullRequest
0 голосов
/ 04 марта 2020

У меня есть ошибка

Maximum stored procedure, function, trigger, or view nesting level exceeded (limit 32).

, когда я звоню

select dbo.CheckProjectValidity(11, 9)

с этой функцией SQL.

ALTER function [dbo].[CheckProjectValidity](@IdParent int, @IdStructure int)
RETURNS bit
AS
BEGIN
declare @Result bit;
if @IdParent=0
    set @Result = 0
    else
    if @IdParent=@IdStructure
        set @Result = 1
    else
        begin
            set @IdParent = (select st.IdParent from Structure st where st.IdParent=@IdParent);
            set @Result = dbo.CheckProjectValidity(@IdParent, @IdStructure)
        end
return @Result
END


Идея, что Я хочу получить список проекта из дерева.

1 Ответ

3 голосов
/ 04 марта 2020

Ваша процедура повторяется бесконечно из-за этого оператора:

set @IdParent = (select st.IdParent from Structure st where st.IdParent=@IdParent)

, который фактически устанавливает @IdParent в его существующее значение. Вы, вероятно, хотели использовать что-то вроде:

set @IdParent = (select st.IdParent from Structure st where st.Id=@IdParent)

(я предполагаю, что IdParent указывает на значение Id в другой строке)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...