gpt4 book ai didi

sql - 在递归存储过程中保存临时列表

转载 作者:行者123 更新时间:2023-12-04 06:40:07 24 4
gpt4 key购买 nike

我想做一个递归的存储过程

数据库有一个零件列表,一个零件可以“包含”另一个零件,所以这个“包含”有一个ID

然后我想做一个函数

它将需要一个参数“ID”

打印身份证

在设备上查找与此 ID 相同的 ID

将这些 ID 保存在列表中

使用列表中的所有 ID 再次调用此函数

我如何制作这份 list

最佳答案

如果这是 SQL Server 2005+,则使用包含递归 CTE 的内联 TVF。示例如下。

USE tempdb;

CREATE TABLE dbo.EquipElement(
EquipmentID int not null primary key,
ContainedIn int null references EquipElement(EquipmentID),
Description varchar(20))

INSERT INTO dbo.EquipElement
SELECT 1, NULL, 'Breakfast' UNION ALL
SELECT 2, 1, 'Fry Up' UNION ALL
SELECT 3, 1, 'Coffee' UNION ALL
SELECT 4, 2, 'Eggs' UNION ALL
SELECT 5, 2, 'Bacon' UNION ALL
SELECT 6, 2, 'Sausages' UNION ALL
SELECT 7, 3, 'Milk' UNION ALL
SELECT 8, 3, 'Sugar'

GO

CREATE FUNCTION dbo.GetBOM
(
@EquipmentID int
)
RETURNS TABLE
AS
RETURN
(
WITH cte AS
(
SELECT EquipmentID,ContainedIn,Description
FROM dbo.EquipElement
WHERE EquipmentID = @EquipmentID
UNION ALL
SELECT e.EquipmentID,e.ContainedIn,e.Description
FROM dbo.EquipElement e
JOIN cte c on e.ContainedIn = c.EquipmentID
)
SELECT EquipmentID,ContainedIn,Description
FROM cte
)

GO

SELECT * FROM dbo.GetBOM(1)

SELECT * FROM dbo.GetBOM(3)

关于sql - 在递归存储过程中保存临时列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4360379/

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