Rumah > pangkalan data > Oracle > teks badan

Bagaimana untuk mencipta jadual sementara dalam prosedur tersimpan Oracle

PHPz
Lepaskan: 2023-04-04 10:14:03
asal
7459 orang telah melayarinya

Prosedur tersimpan Oracle ialah kaedah pengaturcaraan dalam pangkalan data Oracle yang membolehkan pengguna menulis kod dan menyimpannya dalam pangkalan data supaya ia boleh digunakan berulang kali apabila diperlukan. Prosedur tersimpan boleh melaksanakan satu set pernyataan SQL atau kod program lain, dan boleh menerima parameter input dan mengembalikan hasil output.

Dalam prosedur tersimpan Oracle, jadual sementara ialah fungsi yang sangat praktikal, yang boleh digunakan untuk menyimpan set data sementara untuk pemprosesan seterusnya. Artikel ini akan menyelidiki pelaksanaan jadual sementara dalam prosedur tersimpan Oracle.

1 Pengenalan kepada jadual sementara dalam prosedur tersimpan Oracle

Dalam Oracle, jadual sementara ialah objek yang serupa dengan jadual biasa, tetapi ia hanya wujud dalam sesi semasa dan berakhir pada penghujungnya. sesi akan dipadamkan secara automatik. Jadual sementara ialah struktur storan sementara yang disediakan oleh pangkalan data Oracle, yang boleh menyimpan beberapa data yang dijana sementara dengan mudah untuk pemprosesan seterusnya. Tidak seperti jadual biasa, data jadual sementara tidak akan disimpan ke cakera.

Oracle menyokong dua jenis jadual sementara: jadual sementara global dan jadual sementara tempatan. Jadual sementara global ialah jadual sementara yang boleh dikongsi oleh berbilang sesi, manakala jadual sementara tempatan hanya boleh diakses oleh sesi yang menciptanya. Memandangkan jadual sementara global wujud dalam pangkalan data, ia lebih praktikal daripada jadual sementara tempatan dalam beberapa senario.

Semasa proses penyimpanan, jadual sementara boleh digunakan untuk menyimpan set hasil perantaraan untuk mengurangkan bilangan membaca dan menulis data serta mempercepatkan pemprosesan. Dalam prosedur tersimpan yang kompleks, set hasil perantaraan mungkin perlu diproses beberapa kali Untuk mengelakkan akses kerap ke pangkalan data, adalah pilihan yang baik untuk menyimpan set hasil perantaraan dalam jadual sementara.

2. Cara membuat jadual sementara dalam prosedur tersimpan Oracle

Cara untuk mencipta jadual sementara dalam prosedur tersimpan Oracle adalah serupa dengan mencipta jadual biasa. boleh digunakan sebagai awalan. Antaranya, "##" bermaksud mencipta jadual sementara global, dan "#" bermaksud mencipta jadual sementara setempat.

Sebagai contoh, kod berikut menunjukkan cara membuat jadual sementara global:

CREATE GLOBAL TEMPORARY TABLE ##TEMP_TABLE
(
    ID NUMBER(10),
    NAME VARCHAR2(100)
) ON COMMIT PRESERVE ROWS;
Salin selepas log masuk

Dalam kod di atas, "ON COMMIT PRESERVE ROWS" bermaksud untuk mengekalkan semua data dalam jadual apabila transaksi dilakukan data baris dan bukannya mengosongkan data dalam jadual.

Berikut ialah contoh mencipta jadual sementara setempat:

CREATE GLOBAL TEMPORARY TABLE #TEMP_TABLE
(
    ID NUMBER(10),
    NAME VARCHAR2(100)
) ON COMMIT PRESERVE ROWS;
Salin selepas log masuk

Sudah tentu, anda juga boleh menambah indeks, kekangan, dsb. pada definisi jadual untuk memenuhi keperluan sebenar .

3. Menggunakan jadual sementara dalam prosedur tersimpan Oracle

Dalam prosedur tersimpan Oracle, anda perlu memberi perhatian kepada perkara berikut apabila menggunakan jadual sementara:

  1. Dalam prosedur tersimpan Sebelum menggunakan jadual sementara, anda perlu mencipta jadual terlebih dahulu, yang boleh dilakukan pada permulaan prosedur tersimpan.
  2. Selepas pelaksanaan prosedur tersimpan selesai, data dalam jadual sementara perlu dikosongkan, yang boleh dicapai menggunakan pernyataan DELETE.
  3. Apabila prosedur tersimpan tamat, jadual sementara global akan dipadamkan secara automatik dan jadual sementara setempat perlu dipadamkan melalui pernyataan DROP TABLE.

Contoh berikut menunjukkan penggunaan jadual sementara dalam prosedur tersimpan Oracle:

CREATE OR REPLACE PROCEDURE PROCESS_DATA AS
BEGIN
    -- 创建全局临时表
    CREATE GLOBAL TEMPORARY TABLE ##TEMP_TABLE
    (
        ID NUMBER(10),
        NAME VARCHAR2(100)
    ) ON COMMIT PRESERVE ROWS;
    
    -- 插入数据到临时表中
    INSERT INTO ##TEMP_TABLE(ID, NAME) VALUES (1, '张三');
    INSERT INTO ##TEMP_TABLE(ID, NAME) VALUES (2, '李四');
    INSERT INTO ##TEMP_TABLE(ID, NAME) VALUES (3, '王五');
    
    -- 处理临时表中的数据
    FOR item IN (SELECT * FROM ##TEMP_TABLE)
    LOOP
        DBMS_OUTPUT.PUT_LINE(item.ID || ' ' || item.NAME);
    END LOOP;
    
    -- 清除临时表中的数据
    DELETE FROM ##TEMP_TABLE;

    -- 删除全局临时表
    DROP TABLE ##TEMP_TABLE;
END;
Salin selepas log masuk

Dalam contoh di atas, jadual sementara global ##TEMP_TABLE pertama kali dibuat dan dimasukkan beberapa data. Kemudian data dalam jadual sementara diproses, kandungan dalam jadual sementara dibersihkan, dan akhirnya jadual sementara dipadamkan.

Ringkasan:

Dalam prosedur tersimpan Oracle, jadual sementara ialah cara yang mudah dan cekap untuk memproses data. Dengan menggunakan jadual sementara, anda boleh mengelakkan akses kerap ke pangkalan data dan meningkatkan kelajuan pelaksanaan prosedur tersimpan. Apabila menggunakan jadual sementara, anda perlu memberi perhatian untuk mengosongkan data dalam jadual dan memadam jadual secara manual apabila perlu untuk mengelakkan beberapa pengecualian yang tidak dijangka.

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

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!