Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Memodifikasi fungsi PLSQL untuk mengembalikan beberapa baris dari kolom yang sama

Anda perlu membuat beberapa perubahan dalam fungsi Anda. di sisi java itu akan menjadi sederhana pilih

  • Anda perlu mengubah jenis fungsi Anda dari int ke collection baca tentang fungsi tabel di sini Fungsi Tabel
  • nubuat pengguna table() fungsi untuk mengonversi hasil fungsi Anda ke tabelit memungkinkan Anda menggunakan fungsi Anda dalam kueri. baca selengkapnya tentang sintaks di sini:Koleksi Tabel:Contoh

di sini contoh cara memanggil fungsi Anda dari Java:

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. Ubah bidang datetime menjadi hanya bidang tanggal di SQL (Oracle)

  2. masalah rownum dalam kueri Oracle

  3. Oracle - Pernyataan SELECT terbaik untuk mendapatkan perbedaan dalam hitungan menit antara dua kolom DateTime?

  4. penggunaan fungsi rownum dengan> masuk ke oracle

  5. Tidak Dapat Mengkompilasi GI 12.1.0.2 dan Kesalahan Segmentasi