gpt4 book ai didi

sql - 声明终止。最大递归 100 在语句完成之前已经用完

转载 作者:数据小太阳 更新时间:2023-10-29 02:22:33 25 4
gpt4 key购买 nike

我正在编写一个存储过程来检索菜单控件的 xml 结构。这似乎是一个有效的代码(根据我的说法,这是错误的)但在查询测试器上运行不佳。我怎样才能纠正下面的错误是代码

;WITH Hierarchy AS
(
SELECT
MenUid,MenuName,ApplicationId,ParentMenuId, 1 AS 'Level'
FROM
dbo.Menu
WHERE
ParentMenuId = '-1'

UNION ALL

SELECT
M.MenUid,M.MenuName,M.ApplicationId,M.ParentMenuId, Level + 1 AS 'Level'
FROM
dbo.Menu M
INNER JOIN
Hierarchy h ON M.ParentMenuId = h.MenuId
)
SELECT *
FROM Hierarchy
ORDER BY [Level],[MenuName]

ParentMenuId 和 MenuId 相关的地方。我得到的某些其他疑问如下

  1. CTE 用于菜单是否完全正确。你还有哪些其他类型的成功
  2. DataSetChildRelations 也适用于此目的(或者我错了)?

请给我更多关于您如何在您的项目中完成菜单系统的想法。

输入

MenuId      MenuName      ApplicationId    ParentMenuId

1 MenuName1 1 -1

2 MenuName2 1 1

3 MenuName3 1 -1

4 MenuName4 1 2

输出

<Output>
<Menu>
<MenuId>1</MenuId>
<MenuName>MenuName1</MenuName>
<ApplicationId>1</ApplicationId>
<ParentMenuId>-1</ParentMenuId>
<SubMenu>
<Menu>
<MenuId>2</MenuId>
<MenuName>MenuName2</MenuName>
<ApplicationId>1</ApplicationId>
<ParentMenuId>1</ParentMenuId>
<SubMenu>
<MenuId>3</MenuId>
<MenuName>MenuName4</MenuName>
<ApplicationId>1</ApplicationId>
<ParentMenuId>3</ParentMenuId>
</SubMenu>
</Menu>
</SubMenu>
</Menu>
<Menu>
<MenuId>4</MenuId>
<MenuName>MenuName3</MenuName>
<ApplicationId>1</ApplicationId>
<ParentMenuId>-1</ParentMenuId>
</Menu>
</Output>

不要介意我很容易通过 FOR XML PATH 获得的 xml 结构,我一开始并没有让查询运行。

最佳答案

我敢打赌

INNER JOIN
Hierarchy h ON M.ParentMenuId = h.ParentMenuId

其实应该是

INNER JOIN
Hierarchy h ON M.ParentMenuId = h.MenuId

编辑

使用此示例数据:

declare @Menu table (
MenuId int,
MenuName nvarchar(20),
ApplicationId int,
ParentMenuId int
)

insert @Menu values
(1, 'Name1', 1, -1),
(2, 'Name2', 1, 1),
(3, 'Name3', 1, -1),
(4, 'Name4', 1, 2)

和你的查询,经过上面的修改,我得到了

MenUid      MenuName             ApplicationId ParentMenuId Level
----------- -------------------- ------------- ------------ -----------
1 Name1 1 -1 1
3 Name3 1 -1 1
2 Name2 1 1 2
4 Name4 1 2 3

这看起来是正确的。为了帮助您,我们需要查看所有您的相关代码。

关于sql - 声明终止。最大递归 100 在语句完成之前已经用完,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9258125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com