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

Modyfikacja funkcji PLSQL w celu zwrócenia wielu wierszy z tej samej kolumny

musisz dokonać pewnych zmian w swojej funkcji. po stronie java będzie to proste wybierz

  • musisz zmienić typ swojej funkcji z int do collection Przeczytaj o funkcjach tabel tutaj Funkcje tabel
  • użytkownik wyrocznia table() funkcja do konwersji wyniku funkcji na tabelę pozwala na użycie funkcji w zapytaniach. Przeczytaj więcej o składni tutaj:Zbiory tabel:Przykłady

tutaj przykład jak wywołać funkcję z javy:

select t.column_value as process_id 
      from  table(FUNCTION_1(1)) t

--result
    PROCESS_ID
1   1
2   2


--we need create new type - table of integers
CREATE OR REPLACE TYPE t_process_ids IS TABLE OF int;

--and make changes in function
CREATE OR REPLACE FUNCTION FUNCTION_1(
    c_id IN INT)
  RETURN t_process_ids
AS
  l_ids  t_process_ids := t_process_ids();
BEGIN
  --here I populated result of select into the local variables
  SELECT process.id
  bulk collect into l_ids
  FROM PROCESS
  WHERE process.corporate_id = c_id
  ORDER BY process.corporate_id;

  --return the local var
  return l_ids;
END FUNCTION_1;

--the script that I used for testing
create table process(id int, corporate_id int, date_created date);
insert into process values(1, 1, sysdate);
insert into process values(2, 1, sysdate);
insert into process values(3, 2, sysdate);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Źródło danych SSRS 2016 nie wyświetla typu połączenia Oracle

  2. Jak połączyć się z bazą danych Oracle za pomocą cx_Oracle z nazwą usługi i loginem?

  3. Oracle SQL Query do pobrania określonego zdarzenia przy użyciu określonego warunku w xpath?

  4. Jaki jest najprostszy sposób zdefiniowania zmiennej lokalnej w Oracle?

  5. wyrocznia jak obrócić mój stół