Tidak seperti sisipan berbilang baris pernyataan tunggal MySQL, pangkalan data Oracle tidak menyokong kaedah langsung ini. Tetapi kita boleh mencapai fungsi yang serupa dalam beberapa cara:
Gunakan INSERT ALL sintaks (sebelum Oracle 23c)
Dalam versi sebelum Oracle 23c, anda boleh menggunakan sintaks INSERT ALL
untuk sisipan berbilang baris. Contoh berikut menunjukkan cara menggunakan INSERT ALL
untuk memasukkan data ke dalam jadual TMP_DIM_EXCH_RT
:
<code class="language-sql">INSERT ALL INTO TMP_DIM_EXCH_RT (EXCH_WH_KEY, EXCH_NAT_KEY, EXCH_DATE, EXCH_RATE, FROM_CURCY_CD, TO_CURCY_CD, EXCH_EFF_DATE, EXCH_EFF_END_DATE, EXCH_LAST_UPDATED_DATE) VALUES (1, 1, '28-AUG-2008', 109.49, 'USD', 'JPY', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'), (2, 1, '28-AUG-2008', .54, 'USD', 'GBP', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'), (3, 1, '28-AUG-2008', 1.05, 'USD', 'CAD', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'), (4, 1, '28-AUG-2008', .68, 'USD', 'EUR', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'), (5, 1, '28-AUG-2008', 1.16, 'USD', 'AUD', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'), (6, 1, '28-AUG-2008', 7.81, 'USD', 'HKD', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008') SELECT 1 FROM DUAL;</code>
Sintaks dipermudahkan Oracle 23c
Oracle 23c memperkenalkan sintaks sisipan berbilang baris yang dipermudahkan:
<code class="language-sql">INSERT INTO t(col1, col2, col3) VALUES ('val1_1', 'val1_2', 'val1_3'), ('val2_1', 'val2_2', 'val2_3'), ('val3_1', 'val3_2', 'val3_3');</code>
Sintaks ini membenarkan berbilang baris disisipkan menggunakan satu pernyataan.
Pertimbangan Prestasi
Untuk set data yang besar, sintaks ringkas Oracle 23c adalah lebih cekap daripada pendekatan INSERT ALL
. Untuk mengoptimumkan prestasi, adalah disyorkan bahawa bilangan baris yang dimasukkan pada satu masa tidak boleh melebihi kira-kira 1,000 baris.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Sisipan Berbilang Baris dengan Cekap dalam Oracle?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!