我有一个错误
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
我想从树中获取项目列表的想法。
由于此语句,您的过程将无限递归:
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
值)