Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  jadual sementara prosedur tersimpan oracle

jadual sementara prosedur tersimpan oracle

PHPz
PHPzasal
2023-05-20 11:50:071933semak imbas

Dalam pangkalan data Oracle, prosedur tersimpan ialah satu set pernyataan SQL yang dipratentukan yang boleh menerima parameter input dan mengembalikan nilai output. Ia digunakan untuk melaksanakan tugas tertentu, biasanya untuk meningkatkan prestasi dan kebolehselenggaraan dalam pangkalan data Oracle, dan untuk mencapai integrasi yang ketat dengan logik perniagaan.

Jadual sementara ialah ruang storan sementara yang digunakan semasa proses pertanyaan. Dalam pangkalan data Oracle, jadual sementara boleh dibuat menggunakan kenyataan CREATE GLOBAL TEMPORARY TABLE. Jadual sedemikian dipadamkan secara automatik pada penghujung sesi dan boleh digunakan sebagai hasil perantaraan untuk berbilang pertanyaan dalam satu sesi.

Sejak beberapa tahun kebelakangan ini, gabungan prosedur tersimpan dan jadual sementara telah menjadi salah satu amalan terbaik untuk melaksanakan pertanyaan yang cekap dan kompleks. Contohnya, dalam gudang data yang besar, operasi ETL (pengekstrakan, transformasi, dan pemuatan) yang kompleks boleh dilaksanakan menggunakan prosedur tersimpan dan jadual sementara, dan berfungsi dengan baik dari segi prestasi dan kebolehselenggaraan.

Dalam artikel ini, kami akan memperkenalkan cara membuat jadual sementara dalam pangkalan data Oracle dan menggunakannya dengan prosedur tersimpan.

Buat jadual sementara

Untuk mencipta jadual sementara dalam pangkalan data Oracle, anda boleh menggunakan kenyataan CREATE GLOBAL TEMPORARY TABLE berikut:

CREATE GLOBAL TEMPORARY TABLE temp_table_name
(
  column_name1  datatype1,
  column_name2  datatype2,
  column_name3  datatype3,
  ...
)
ON COMMIT DELETE ROWS;

Dalam pernyataan ini:

  • temp_table_name ialah nama jadual sementara yang ingin anda buat.
  • column_name ialah nama lajur dalam jadual dan berbilang lajur boleh ditakrifkan.
  • datatype ialah jenis data setiap lajur.

Perhatikan bahawa dalam penyata ini, ON COMMIT DELETE ROWS merujuk kepada pemadaman semua baris dalam jadual sementara apabila transaksi dilakukan atau sesi ditutup. Ini memastikan bahawa setiap sesi menggunakan jadual kosong dan membebaskan sumber sistem pada akhir sesi.

Menggunakan Jadual Sementara

Setelah anda mencipta jadual sementara, anda boleh menggunakannya dalam prosedur tersimpan. Contohnya, jika anda perlu mentakrifkan set hasil perantaraan dalam prosedur tersimpan, anda boleh menggunakan langkah berikut:

  1. Tentukan jadual sementara dalam prosedur tersimpan:
CREATE OR REPLACE PROCEDURE my_procedure IS
BEGIN
  CREATE GLOBAL TEMPORARY TABLE temp_table
  (
    col1  NUMBER,
    col2  VARCHAR2(20)
  )
  ON COMMIT DELETE ROWS;
END my_procedure;

dalam ini Dalam contoh, saya menentukan jadual sementara bernama temp_table dalam prosedur tersimpan, termasuk dua lajur col1 dan col2, dan menggunakan pilihan ON COMMIT DELETE ROWS untuk mentakrifkannya.

  1. Sisipkan data ke dalam jadual sementara dalam prosedur tersimpan:
CREATE OR REPLACE PROCEDURE my_procedure IS
BEGIN
  CREATE GLOBAL TEMPORARY TABLE temp_table
  (
    col1  NUMBER,
    col2  VARCHAR2(20)
  )
  ON COMMIT DELETE ROWS;
  
  INSERT INTO temp_table (col1, col2)
  VALUES (1, 'Hello');
  
  INSERT INTO temp_table (col1, col2)
  VALUES (2, 'World');
  
  COMMIT;
END my_procedure;

Dalam contoh ini, saya memasukkan dua baris data ke dalam jadual sementara. Ambil perhatian bahawa pernyataan COMMIT di sini diperlukan kerana jadual sementara dalam pangkalan data Oracle hanya tersedia apabila transaksi dilakukan.

  1. Menyiasat jadual sementara dalam prosedur tersimpan:
CREATE OR REPLACE PROCEDURE my_procedure IS
  cur1 SYS_REFCURSOR;
BEGIN
  CREATE GLOBAL TEMPORARY TABLE temp_table
  (
    col1  NUMBER,
    col2  VARCHAR2(20)
  )
  ON COMMIT DELETE ROWS;
  
  INSERT INTO temp_table (col1, col2)
  VALUES (1, 'Hello');
  
  INSERT INTO temp_table (col1, col2)
  VALUES (2, 'World');
  
  COMMIT;
  
  OPEN cur1 FOR
  SELECT *
  FROM temp_table;
  
  -- Use the result set
  -- ...
END my_procedure;

Dalam contoh ini, saya menggunakan jenis data SYS_REFCURSOR untuk mengisytiharkan penunjuk set hasil. Saya kemudian membuka kursor dalam prosedur tersimpan, menggunakan pernyataan SELECT untuk mendapatkan semula data daripada jadual sementara dan mengembalikan set hasil kepada atur cara yang dipanggil prosedur tersimpan. Selepas ini, anda boleh menggunakan set hasil seperti kursor lain.

Kesimpulan

Dalam pangkalan data Oracle, prosedur tersimpan dan jadual sementara telah menjadi amalan terbaik untuk melaksanakan pertanyaan kompleks. Menggunakan jadual sementara bersama-sama dengan prosedur tersimpan boleh meningkatkan prestasi pertanyaan dan kebolehselenggaraan, serta mencapai integrasi yang ketat dengan logik perniagaan. Dalam aplikasi praktikal, adalah disyorkan untuk mereka bentuk jadual sementara dan prosedur tersimpan anda dengan teliti dan memastikan ia boleh mencapai keperluan anda.

Atas ialah kandungan terperinci jadual sementara prosedur tersimpan oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:pemasangan oracle 11g racArtikel seterusnya:pemasangan oracle 11g rac