1
我在使用Oracle SQL循环两次结果集时遇到了问题。使用游标将结果集保存在变量中
问题
我有一个游标,让我所有的外键给定的表名。使用这个游标的结果,我遍历所有约束并禁用它们。然后我执行数据导入,然后我需要遍历相同的结果集并启用它们。
CURSOR c_fkeys_inn(tabellnavn IN VARCHAR2)
IS
SELECT table_name,constraint_name, status
FROM user_constraints
WHERE (r_constraint_name,r_owner) IN
(SELECT constraint_name, owner
FROM user_constraints
WHERE owner ='POP'
AND table_name=upper(tabellnavn)
)
AND STATUS = 'ENABLED';
我想这样做
我的大脑直接跳转到一个变量。我想只执行一次游标,然后将游标的结果保存到变量中。
这是可能的,或者是有什么我做保存从游标和循环事半功倍的效果?
是。这工作正常。你介意解释你如何创建变量? – Stene
您需要创建一个与上面提到的游标对应的表类型。一旦你创建了类型,你需要一次性将所有的光标记录存储到类型中,这可以使用批量收集来实现。批量收集检索所有行并将它们加载到集合中并切换回PL/SQL引擎。一旦存储了所有的行,我们可以使用循环概念在类型和显示内进行遍历或者执行必要的操作。对于迟到的回复(由于时间差距:),抱歉) –