假设光标在包其他地方声明,你可以使用参数来决定哪些实际光标一起工作,是这样的:
PROCEDURE insertdetails(typ IN VARCHAR2) IS
BEGIN
IF typ = 'CURSOR_A' THEN
OPEN cursor_a;
LOOP
FETCH cursor_a INTO colA;
EXIT WHEN cursor_a%notfound;
--MISSING CODE
END LOOP;
ELSE
OPEN cursor_b;
LOOP
FETCH cursor_b INTO colA;
EXIT WHEN cursor_b%notfound;
--MISSING CODE
END LOOP;
END IF;
END;
或者,如果遗漏码是常见的,似乎有可能:
PROCEDURE insertdetails(typ IN VARCHAR2) IS
BEGIN
IF typ = 'CURSOR_A' THEN
OPEN cursor_a;
ELSE
OPEN cursor_b;
END IF;
LOOP
IF typ = 'CURSOR_A' THEN
FETCH cursor_a INTO colA;
EXIT WHEN cursor_a%notfound;
ELSE
FETCH cursor_b INTO colA;
EXIT WHEN cursor_b%notfound;
END IF;
--MISSING CODE
END LOOP;
END;
无论哪种方式,你可能更喜欢在case
的if
;特别是如果typ
可以代表的可能光标的数量增加。
我不认为你可以做到这一点。你可以传递一个你可以执行的sql语句,如果有帮助的话?你能提供你正在传递的光标的细节/你想要达到的目标吗? – ChrisProsser
两个游标都从同一个表中选择相同数量的记录,但每个记录的条件都不相同。记录将被插入程序。 – lyno