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

Jalankan prosedur tersimpan async di pengembang sql

Karena Anda ingin mensimulasikan N sesi setiap memanggil prosedur 1000/N kali, saya mungkin akan melakukan sesuatu seperti

CREATE OR REPLACE PROCEDURE call_myproc_n_times( p_n IN NUMBER )
AS
  p_status         NUMBER;
  p_ora_error_code VARCHAR2(1000);
  p_ora_error_msg  VARCHAR2(1000);
BEGIN
  FOR i IN 1 .. p_n 
  LOOP
    myproc( 'test', 
            p_status, 
            p_ora_error_code, 
            p_ora_error_msg );
  END LOOP;
END;

DECLARE
  l_num_sessions     number := 10;
  l_exec_per_session number := 100;
  l_jobno            pls_integer;
BEGIN
  FOR i IN 1 .. l_num_sessions
  LOOP
    dbms_job.submit( 
      l_jobno,
      'BEGIN ' ||
      '  call_myproc_n_times( ' || l_exec_per_session || ' ); ' ||
      'END;',
      sysdate + interval '1' minute );
  END LOOP;
  commit;
END;

Contoh ini akan memulai 10 sesi yang masing-masing akan menjalankan prosedur 100 kali secara berurutan dengan asumsi JOB_QUEUE_PROCESSES database Anda minimal 10 artinya Oracle diizinkan menjalankan 10 pekerjaan di latar belakang secara bersamaan. Membuat CALL_MYPROC_N_TIMES prosedur tidak sepenuhnya diperlukan-- itu hanya membuat pembuatan string untuk dieksekusi dalam pekerjaan lebih mudah.

Alternatifnya adalah mengirimkan 1000 pekerjaan yang masing-masing disebut MYPROC sekali dan mengandalkan JOB_QUEUE_PROCESSES parameter untuk membatasi jumlah pekerjaan yang akan dijalankan secara bersamaan. Itu akan berhasil, hanya saja lebih sulit untuk mengubah parameter basis data jika Anda ingin menjalankan lebih banyak sesi simultan yang lebih sedikit-- mudah untuk menyesuaikan L_NUM_SESSIONS dalam kode yang saya posting.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cari Kolom XML di SQL

  2. Bagaimana cara mengganti nilai tertentu di kolom database Oracle?

  3. cara memanggil fungsi oracle di mybatis

  4. Kesalahan login Sqlplus saat menggunakan variabel bash:SP2-0306:Opsi tidak valid

  5. Konversi basis PL/SQL tanpa fungsi