カーソルがパッケージ内の別の場所で宣言されていると仮定すると、パラメーターを使用して、実際にどのカーソルを操作するかを次のように決定できます。
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。