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

Cara memanggil Fungsi atau Prosedur Oracle menggunakan Hibernate (EntityManager) atau JPA

Fungsi Oracle atau prosedur tersimpan dapat dipanggil menggunakan EntityManager dengan cara berikut.

Untuk Fungsi Oracle

Buat fungsi dengan sys_refcursor sebagai tipe pengembalian

CREATE OR REPLACE FUNCTION my_function
(p_val IN varchar2)
    RETURN SYS_REFCURSOR
  AS
    my_cursor SYS_REFCURSOR;
  BEGIN
    OPEN my_cursor FOR SELECT emp_name FROM employees
    WHERE lower(emp_name) like lower(p_val||'%');
    RETURN my_cursor;    
  END;

Di kelas Entitas, definisikan fungsi sebagai

@javax.persistence.NamedNativeQuery(name = "getFunc", query = "{? =  call
my_function(:empName) }", resultClass = Employee.class, hints = {
@javax.persistence.QueryHint(name = "org.hibernate.callable", value = "true") })

Untuk Prosedur Tersimpan Oracle

Buat prosedur dengan sys_refcursor sebagai parameter OUT pertama

CREATE OR REPLACE PROCEDURE myProcedure(p_cursor out sys_refcursor,
     p_val  in varchar2
)
 AS
BEGIN
     OPEN o_cursor FOR
          SELECT     emp_name 
             FROM     employees 
            WHERE     LOWER (emp_name) LIKE lower(p_val||'%');

Di kelas Entitas, definisikan prosedur sebagai

@javax.persistence.NamedNativeQuery(name = "getProc", query = "{ call
my_procedure(?,:empName) }", resultClass = Employee.class, hints = {
@javax.persistence.QueryHint(name = "org.hibernate.callable", value = "true") })

dan akhirnya dalam fungsi atau prosedur panggilan kelas DAO sebagai

Query query = entityManager.createNamedQuery("getFunc"); // if procedure then getProc 
query.setParameter("empName","smith"); 
query.getResultList(); 

Terima kasih



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. masalah dengan Add_month di Oracle, saya perlu membuat siklus penagihan

  2. Bisakah saya mengubah baris tanggal menjadi kolom tanpa harus menentukan tanggal di pivot? Oracle SQL

  3. Bagaimana cara mengembangkan pemicu setelah serverror di Oracle?

  4. Java tidak menjalankan pernyataan persiapan dengan parameter

  5. Kunci liquibase - alasan?