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

Cara Mengembalikan Set Kustom dalam Prosedur Tersimpan PL/SQL

Kecuali jika Anda secara khusus ingin menggunakan koleksi, akan lebih mudah menggunakan kursor ref:

CREATE OR REPLACE PROCEDURE sample_procedure ( 
   p_some_select_sql_result OUT SYS_REFCURSOR 
) 
AS 
BEGIN
   OPEN p_some_select_sql_result FOR
      SELECT ...
      FROM ...
      JOIN ...
      ... etc.;
END;
/

Dari JDBC Anda kemudian dapat melakukan sesuatu seperti:

cStmt = conn.prepareCall('{ call sample_procedure(?) }');
cStmt.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);
cStmt.execute();
rSet = cStmt.getCursor(1);

dan Anda kemudian dapat mengulangi set hasil seperti yang Anda lakukan dengan yang lain.

Anda juga dapat menggunakan fungsi sebagai gantinya:

CREATE OR REPLACE FUNCTION sample_function RETURN SYS_REFCURSOR
AS 
   l_some_select_sql_result
BEGIN
   OPEN l_some_select_sql_result FOR
      SELECT ...
      FROM ...
      JOIN ...
      ... etc.;

   RETURN l_some_select_sql_result;
END;
/

dan

cStmt = conn.prepareCall('{ ?=call sample_function }');
cStmt.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);
cStmt.execute();
rSet = cStmt.getCursor(1);

Jelas Anda perlu menangani parameter lain yang Anda berikan ke prosedur/fungsi Anda yang sebenarnya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sql - ORA-00937:bukan fungsi grup grup tunggal

  2. Tidak dapat menginisialisasi point cloud - ORA-13249:Kesalahan saat membuat pemicu dml

  3. Masalah dengan pengelompokan

  4. Bagaimana cara memperbaiki subquery baris tunggal Ora-01427 mengembalikan lebih dari satu baris dalam pilihan?

  5. Prosedur tersimpan Oracle:mengembalikan set hasil dan parameter keluar