gpt4 book ai didi

SQL with 子句动态 where 参数

转载 作者:行者123 更新时间:2023-12-03 02:23:48 25 4
gpt4 key购买 nike

我有一个具有以下结构的树形数据库:

表格字段:

NodeID int 
ParentID int
Name varchar(40)
TreeLevel int

我想在 with 子句的第一部分使用变量 @NodeID ,以免所有表都从我感兴趣的部分开始(请参阅其中 Parent=@ParentID 和评论)。

with RecursionTest (NodeID,ParentID,ThemeName)
as
(
--if i remove the where from here it spends too much time (the tree is big)--
select Nodeid,ParentID,Name from TreeTable where ParentID=@ParentID
union all
select T0.Nodeid,
T0.ParentID,
T0.Name
from
TreeTable T0
inner join RecursionTest as R on T0.ParentID = R.NodeID
)
select * from RecursionTest

这会引发一些错误,但我的问题是:

  • 是否可以将变量传递给 with 子句?

提前非常感谢。

致以诚挚的问候。

何塞

最佳答案

是的。

declare @ParentID int
set @ParentID = 10;

with RecursionTest (NodeID,ParentID,ThemeName) ....

您也可以将整个事情包装在参数化的内联 TVF 中。最后一种方法的示例。

CREATE FUNCTION dbo.RecursionTest (@ParentId INT)
RETURNS TABLE
AS
RETURN
(
WITH RecursionTest (NodeID,ParentID,ThemeName)
AS
(
/*... CTE definition goes here*/
)
SELECT NodeID,ParentID,ThemeName
FROM RecursionTest
)
GO

SELECT NodeID,ParentID,ThemeName
FROM dbo.RecursionTest(10)
OPTION (MAXRECURSION 0)

关于SQL with 子句动态 where 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3710018/

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