Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Przypisanie kursora funkcji

Chcesz:

> FUNKCJA UTWÓRZ LUB ZASTĄP wartości_wyboru RETURN t1_prueba_table TYP PIPELINEDIS t2_type IS TABELA t2%rowtype; t2_data t2_type; v_pc t1.pc%TYPE;BEGIN -- https://stackoverflow.com/a/67516191/1509264 -- Licencja:CC BY-SA 4.0 FOR cur IN ( SELECT * FROM t1 ORDER BY pc, r ) LOOP IF v_pc IS NULL LUB v_pc <> cur.pc TO v_pc :=cur.pc; SELECT * BULK COLLECT INTO t2_data FROM t2 WHERE pc =cur.pc; KONIEC JEŚLI; ZADEKLARUJ a_freqs int_list :=int_list(); cum_freq INT :=0; wzięto string_list :=split_string(cur.an, ', '); idx INT; c t2.a%TYP; BEGIN a_freqs.extend(t2_data.count); FOR i IN 1..t2_data.count PĘTLA IF t2_data(i).a =cur.ao AND t2_data(i).c> 0 THEN -- Jeśli istnieje wartość "ao" i ma pojemność, przypisz ją do " c" c :=t2_data(i).a; -- Zmniejsz odpowiedni wiersz „t2_data”, aby pokazać, że został użyty. t2_data(i).c :=t2_data(i).c - 1; -- Ustaw "cum_freq" na 0, aby pominąć pętlę, w której wartości są przydzielane losowo. cum_freq :=0; -- Wyjdź z pętli EXIT; ELSIF ( t2_data(i).a =cur.ay AND t2_data(i).c> 0 ) LUB ( cur.ay JEST NULL AND t2_data(i).a NIE JEST CZŁONKIEM wziętych AND t2_data(i).c> 0 ) THEN a_częst.(i) :=sum_częst. + t2_data(i).c; sum_częstot :=sum_częstot + t2_data(i).c; ELSE a_freqs(i) :=cum_freq; KONIEC JEŚLI; PĘTLA KOŃCOWA; JEŻELI częst_nam> 0 WTEDY idx :=piętro(dbms_losowa.wartość(0, częst_nam)); FOR i IN 1..t2_data.count PĘTLA JEŻELI idx

db<>fiddle tutaj




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PL/SQL używa VARRAY w KLAUZULI

  2. Podczas instalacji formularza Oracle wystąpił błąd. Nie można uruchomić instalatora (555)

  3. Czy istnieje funkcja sum MD5 w PL/SQL?

  4. Importuj plik XML do Oracle XML DB Repository

  5. Błąd niezgodności Oracle.DataAccess