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

Melewati daftar tanggal ke fungsi Oracle db melalui java

Melewati array ke fungsi database memiliki banyak cara. Yang sederhana adalah sebagai berikut:

Pertama, Anda harus membuat TABLE ketik skema DB Anda:

CREATE TYPE DATE_ARRAY AS TABLE OF DATE;

Setelah itu Anda harus menulis FUNCTION dengan jenis masukan baru ini:

-- a dummy function just for presenting the usage of input array
CREATE FUNCTION Date_Array_Test_Function(p_data IN DATE_ARRAY) 
RETURN INTEGER  
IS
    TYPE Cur IS REF CURSOR;
    MyCur cur;

    single_date DATE;
BEGIN
    /* Inside this function you can do anything you wish 
        with the input parameter: p_data */

    OPEN MyCur FOR SELECT * FROM table(p_data);

    LOOP
      FETCH MyCur INTO single_date;
      EXIT WHEN MyCur%NOTFOUND;

      dbms_output.put_line(to_char(single_date));
    END LOOP;

    RETURN 0;

END Date_Array_Test_Function;

Sekarang di java kode Anda dapat menggunakan kode berikut untuk memanggil fungsi seperti itu dengan tipe input array:

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Types;

import oracle.sql.ARRAY;
import oracle.sql.ArrayDescriptor;

public class Main 
{           
    public static void main(String[] args) throws SQLException 
    {
        Connection c = DriverManager.getConnection(url, user, pass);

        String query = "begin ? := date_array_test_function( ? ); end;";

        // note the uppercase "DATE_ARRAY"
        ArrayDescriptor arrDescriptor = ArrayDescriptor.createDescriptor("DATE_ARRAY", c);

        // Test dates
        Date[] inputs = new Date[] {new Date(System.currentTimeMillis()),
                                    new Date(System.currentTimeMillis()),
                                    new Date(System.currentTimeMillis())};

        ARRAY array = new ARRAY(arrDescriptor, c, inputs);

        CallableStatement cs = c.prepareCall(query);
        cs.registerOutParameter(1, Types.INTEGER); // the return value
        cs.setObject(2, array); // the input of the function
        cs.executeUpdate();

        System.out.println(cs.getInt(1));
    }
}

Semoga bermanfaat.

Semoga Sukses



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle PL/SQL:Buat Paket DML Online

  2. Cara memasukkan ikatan untuk parameter multi-nilai di SQL Developer

  3. Menggunakan Substr dengan Instr untuk Mengekstrak String di Oracle

  4. Kombinasi dari Satu Tabel, Dikelompokkan Berdasarkan Nilai Kolom

  5. Pola pengamat di Oracle