假設光標在包其他地方聲明,你可以使用參數來決定哪些實際光標一起工作,是這樣的:
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