gpt4 book ai didi

sql - 有没有办法在 SQL Server 游标中使用参数?

转载 作者:行者123 更新时间:2023-12-02 16:05:25 26 4
gpt4 key购买 nike

我在数据库中有父子关系。我需要做的是循环遍历父级的查询,并使用父级的主键获取其子级。我遇到的问题是我需要使用参数化游标(传入 key )来执行此操作。

SQL Server 中有这样的东西或者模仿它的技巧吗?我尝试这样做,但没有成功:

DECLARE @value   VARCHAR(20);
DECLARE @someKey NUMERIC(19,0);

DECLARE main_curs
CURSOR FOR SELECT value FROM someTable where key = @someKey;

SET @someKey = 12345;

OPEN main_curs
FETCH NEXT FROM main_curs INTO @value;
CLOSE main_curs
DEALLOCATE main_curs

但它似乎没有让我设置@someKey。

对此的任何帮助将不胜感激。谢谢!

更新

我应该包含更多信息,因为我使示例看起来太简单了。我有多个需要使用的 @someKey 值。如前所述,我有亲子关系,最多可以有 6 个 child 。因此,我正在获取 parent 列表及其各自的列,并对其进行迭代。在 WHILE-LOOP 中,我想从父级获取主键并调用另一个游标来获取子级信息(返回不同的列)。因此,我将使用不同的 @someKey 值集对子光标进行多次调用。希望这是有道理的。

最佳答案

您需要的是 2 个游标 - 一个用于父游标,一个用于子游标。确保子游标是在循环内部而不是外部声明的。如果您在外部声明,它将不起作用。

例如:

DECLARE @value   VARCHAR(20);
DECLARE @someKey NUMERIC(19,0);

DECLARE main_curs
CURSOR FOR SELECT value FROM someTable where key = @someKey;

SET @someKey = 12345;

OPEN main_curs
FETCH NEXT FROM main_curs INTO @value;
while @@FETCH_STATUS = 0
BEGIN

DECLARE CHILD_CURS CURSOR FOR SELECT VALUE2 FROM CHILDTABLE WHERE value=@value;
open child_curs
fetch next from child_curs into @x,@y

close child_curs
deallocate child_curs

FETCH NEXT FROM main_curs INTO @value;
END

CLOSE main_curs
DEALLOCATE main_curs

关于sql - 有没有办法在 SQL Server 游标中使用参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6256599/

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