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

Tingkatkan Performa Dengan Kumpulkan Massal Di Oracle

Gunakan Kumpulkan Massal untuk mengambil beberapa baris data dalam satu operasi pengambilan. Beberapa baris data dalam satu pengambilan mengurangi jumlah perjalanan pulang pergi jaringan dan meningkatkan kinerja.
Contoh berikut menjelaskan pekerjaan yang tercantum dalam tabel JOB_HISTORY adalah pekerjaan yang dimiliki karyawan tetapi juga pekerjaan yang dilakukan karyawan setelah pekerjaan yang tercantum dalam tabel JOB_HISTORY.
PROSEDUR BUAT ATAU GANTI Promotion_Rev

IS
pekerjaan_lama hr.job_history.job_id%TYPE;
jam_pekerjaan baru.job_history.job_id%TYPE;
nincr NUMBER;

KURSOR cselectjob
IS
SELECT employee_id,
start_date,
end_date,
job_id
FROM hr.job_history
ORDER BY employee_id, start_date;

TYPE jh_rec ADALAH REKAM (
employee_id hr.job_history.employee_id%TYPE,
start_date hr.job_history.start_date%TYPE,
end_date hr.job_history.end_date%TYPE,
job_id hr .job_history.job_id%TYPE
);

TYPE jh_table ADALAH TABEL jh_rec
INDEX OLEH PLS_INTEGER;

jh_table_array jh_table;
BEGIN
BUKA cselectjob;

FETCH cselectjob
KUMPULKAN MASSAL KE jh_table_array;

TUTUP cselectjob;

UNTUK pencacah DI jh_table_array.FIRST .. jh_table_array.LAST
LOOP
IF counter =jh_table_array.LAST
THEN
nincr :=0;
ELSE
nincr :=1;
SELESAI JIKA;

old_job :=jh_table_array (penghitung).job_id;

JIKA jh_table_array (counter).employee_id =
jh_table_array (counter + nincr).employee_id
MAKA
new_job :=jh_table_array (counter + nincr).job_id;
ELSE
PILIH job_id
INTO new_job
DARI hr.employees
WHERE hr.employees.employee_id =
jh_table_array (counter).employee_id;
END IF;

DBMS_OUTPUT.put_line( 'Karyawan '
|| jh_table_array (counter).employee_id
|| ' punya pekerjaan '
|| old_job
|| ' untuk '
| | (jh_table_array (counter).end_date
- jh_table_array (counter).start_date)
|| ' hari dan pindah ke pekerjaan '
|| new_job
|| '.');
END LOOP;
END;
/

Jalankan prosedur berikut:

setel serveroutput on;
BEGIN
promotion_rev;
END;
/
Outputnya akan seperti ini:

Karyawan 101 memiliki pekerjaan AC_ACCOUNT selama 1497 hari dan pindah ke pekerjaan AC_MGR.
Karyawan 101 memiliki pekerjaan AC_MGR selama 1234 hari dan pindah ke pekerjaan AD_VP.
Karyawan 102 memiliki pekerjaan IT_PROG selama 2018 hari dan pindah ke pekerjaan AD_VP.
Karyawan 114 memiliki pekerjaan ST_CLERK selama 647 hari dan pindah ke pekerjaan PU_MAN.
Pegawai 122 memiliki pekerjaan ST_CLERK selama 364 hari dan pindah ke pekerjaan ST_MAN.
Pegawai 176 memiliki pekerjaan SA_REP selama 282 hari dan pindah ke pekerjaan SA_MAN.
Karyawan 176 memiliki pekerjaan SA_MAN selama 364 hari dan pindah ke pekerjaan SA_REP.
Karyawan 200 memiliki pekerjaan AD_ASST selama 2100 hari dan pindah ke pekerjaan AC_ACCOUNT.
Karyawan 200 memiliki pekerjaan AC_ACCOUNT untuk 1644 hari dan pindah ke pekerjaan AD_ASST.
Karyawan 201 memiliki pekerjaan MK_REP selama 1401 hari dan pindah ke pekerjaan MK_REP.
Prosedur PL/SQL berhasil diselesaikan.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengetahui id sebelum menyimpan objek di jpa

  2. Mengaktifkan TLS di R12.1

  3. Bagaimana Cara Menghasilkan Paket Tabel API di Oracle SQL Developer?

  4. Melewati array ke prosedur Oracle dari c #

  5. Bagaimana batas waktu kueri JDBC Oracle diterapkan?