【发布时间】:2023-02-23 04:14:42
【问题描述】:
我只想在我的 pl/sql 代码中使用一次“For Loop”。假设我有 2 个(或更多)游标。例如,如何使用 IF 语句使其动态化,以选择要在该“For 循环”中运行的游标?
尝试使用相同的变量存储两个游标结果,但显然这行不通,因为你不能把它命名为同一个变量.但我的意图是像这样使用它:
If color_input = 'GREEN' Then toy_rec := cursr_greens
If color_input = 'BLUE' Then toy_rec := cursr_blues
Else NULL
end if;
For cursr in toy_rec LOOP
我知道可以用另一种方式实现这一点,但我的目的是在现有代码中添加尽可能少的代码(我不想重复这个过程,等等)
想法?
【问题讨论】:
-
什么样的游标 - 它们是如何定义的?它们是否具有相同的列和数据类型?你能用一个参数化游标代替吗?
-
是的,它们具有完全相同的列和数据类型——我将其定义为集合类型(表类型)。我们可能需要添加不同的人群,所以我认为单参数游标可能会变得过于复杂。我会尝试 Paul 建议的 ref cursor。谢谢!
-
您不能像这样交换静态游标。您可以使用 UNION ALL 创建一个游标并在运行时使用参数选择其中的一层吗?