Ustaw typy danych i funkcje pomocnicze:
CREATE TYPE string_list JEST TABELĄ VARCHAR2(2);/CREATE TYPE int_list JEST TABELĄ INT;/CREATE TYPE t1_data AS OBJECT( vk VARCHAR2(4), ay VARCHAR2(2), an VARCHAR2(14) , r INT, c VARCHAR2(2));/UTWÓRZ TYP t1_table JEST TABELĄ t1_data;/UTWÓRZ LUB ZAMIEŃ FUNKCJĘ split_String( i_str IN VARCHAR2, i_delim IN VARCHAR2 DEFAULT ',') RETURN string_list DETERMINISTICAS p_result string_list( :=) p_start LICZBA(5) :=1; p_end NUMER(5); c_len STAŁA LICZBA(5) :=DŁUGOŚĆ( i_str ); c_ld CONSTANT NUMBER(5) :=LENGTH( i_delim );BEGIN -- https://stackoverflow.com/a/35577315/1509264 -- Licencja:CC BY-SA 4.0 JEŻELI c_len> 0 TO p_end :=INSTR( i_str, i_delim, p_start ); PODCZAS p_end> 0 PĘTLA p_result.EXTEND; p_result( p_result.COUNT ) :=SUBSTR( i_str, p_start, p_end - p_start ); p_start :=p_koniec + c_ld; p_end :=INSTR( i_str, i_delim, p_start ); PĘTLA KOŃCOWA; JEŻELI p_start <=c_len + 1 TO p_result.EXTEND; p_result( p_result.COUNT ) :=SUBSTR( i_str, p_start, c_len - p_start + 1 ); KONIEC JEŚLI; KONIEC JEŚLI; RETURN p_result;END;/
Następnie możesz użyć funkcji:
Co dla przykładowych danych:
CREATE TABLE t1 (vk, ay, an, r) jako wybierz „VK1”, null, „A1, A2”, 1 z podwójnej unii wszystkie wybierz „VK2”, null, null, 2 z podwójnej unii wszystkie wybierz 'VK3', null, 'A1, A2, A3, A4', 3 z dual union wszystkie wybierz 'VK4', null, 'A2', 4 z dual union wszystkie wybierz 'VK5', null, null, 5 z dual union wszystkie wybierz 'VK6', null, null, 6 z dual union wszystkie wybierz 'VK7', 'A3', null, 7 z dual union wszystkie wybierz 'VK8', null, null, 8 z dual union wszystkie wybierz 'VK9 ', null, null, 9 z dual union wszystkie wybierz 'VK10', null, null, 10 z dual union wszystkie wybierz 'VK11', null, null, 11 z dual union wszystkie wybierz 'VK12', null, null, 12 z dual union wszystkie wybierz 'VK13', 'A3', null, 13 z dual union wszystkie wybierz 'VK14', null, null, 14 z dual union wszystkie wybierz 'VK15', 'A3', null, 15 z dual union wszystkie wybierz 'VK16', null, null, 16 z podwójnej unii wszystko wybierz 'VK17', null, null, 17 z podwójnej unii wszystko wybierz 'VK18', null, null, 18 z podwójnej unii wszystko wybierz „VK19”, null, null, 19 z podwójnej unii wszystko wybierz „VK20”, null, null, 20 z podwójnej; UTWÓRZ TABELĘ t2 (a, c) jako wybierz „A1”, 4 z podwójnej unii wszystko wybierz „A2” , 10 z podwójnej unii wszystkie wybierz 'A3', 2 z podwójnej unii wszystkie wybierz 'A4', 10 z podwójnej;
Następnie:
WYBIERZ * Z PICK_VALUES();
Majowe wyjście:
VK AY AN R C VK1A1, A21A4VK22A2VK3A1, A2, A3, A43VK4A24A1VK55A2VK66A2VK7A37A3VK88A1VK99A2VK1010A4VK1111A2VK1212A1VK13A313A3VK1414K191817A4VK4VK1414K191816A4VK4VK1414K191817A4VK4db<>graj tutaj