我一般的問題是,我有10000個不同的數字作爲一個列表(即13,22,443,...,5010 - 沒有在表中,也不能創建他們的表),我需要通過這些數字中塊循環(1..100,101..200,202..300等 - 首100號,毗鄰100號等...)轉換列行
我的第一個反應是創造一個遊標和循環與LIMIT子句中,但我不知道是否有可能。
有什麼辦法來定義這些特定值的光標?如果不是,有人可以給我一些其他的可能性嗎?
也許選擇所有值從雙和列將其轉化爲行,從這裏創建一個遊標,這可能嗎?
謝謝
我一般的問題是,我有10000個不同的數字作爲一個列表(即13,22,443,...,5010 - 沒有在表中,也不能創建他們的表),我需要通過這些數字中塊循環(1..100,101..200,202..300等 - 首100號,毗鄰100號等...)轉換列行
我的第一個反應是創造一個遊標和循環與LIMIT子句中,但我不知道是否有可能。
有什麼辦法來定義這些特定值的光標?如果不是,有人可以給我一些其他的可能性嗎?
也許選擇所有值從雙和列將其轉化爲行,從這裏創建一個遊標,這可能嗎?
謝謝
我發現這一點:
cursor c is
with test as
(select 709941, 709959, 710165, 710183, 710199, 710201, 710203, 710220, 710352, 710571, 710630, 710710, 710714, 710723, 710724, 710761, 710845, 710877, 710878, 710892, 710908, 710915' col from dual)
select regexp_substr(col, '[^;]+', 1, level) result
from test
connect by level <= length(regexp_replace(col, '[^;]+')) + 1;
您可以指定與特定值的PL/SQL collection:
DECLARE
TYPE t_table IS TABLE OF PLS_INTEGER;
v_list t_table;
BEGIN
v_list := t_table(13, 22, 443, 5010);
FOR n IN v_list.FIRST .. v_list.LAST LOOP
dbms_output.put_line(v_list(n));
END LOOP;
END;
/
13
22
443
5010
,將創建的PLS_INTEGERS
集合(也可以是NUMBER
或任何其它數據類型),並遍歷所有該集合中的元素。
難道其中有恰好是100001和10000,或只是一個隨機的(ISH)號碼列表之間的所有數字? – BriteSponge
這些數字是隨機的(ish),例如,第678個數字可以是1940049,但count(all_numbers)= 10000。 – mikcutu
因此,大概你在某個列表中有數字?也許是另一個數據庫或文件。 。 。如果是這樣,那麼你可以鏈接到其他數據庫或爲數字列表文件創建一個外部表定義,並在遊標循環中使用它。 – BriteSponge