Rumah > pangkalan data > Oracle > Analisis mendalam mengenai prosedur dan pencetus yang disimpan Oracle

Analisis mendalam mengenai prosedur dan pencetus yang disimpan Oracle

PHPz
Lepaskan: 2023-04-04 14:17:23
asal
754 orang telah melayarinya

Prosedur dan pencetus yang disimpan Oracle ialah alat yang sangat penting dalam pembangunan pangkalan data. Ia boleh membantu pembangun melaksanakan beberapa fungsi tertentu. Artikel ini akan memperkenalkan prosedur dan pencetus tersimpan Oracle secara terperinci untuk membantu pembaca memahami cara menggunakannya untuk meningkatkan prestasi dan kebolehpercayaan aplikasi pangkalan data.

1. Pengenalan kepada prosedur tersimpan Oracle

Prosedur tersimpan Oracle ialah satu set pernyataan SQL tersusun yang boleh dilaksanakan oleh pangkalan data Oracle dan boleh mempunyai parameter input dan output. Prosedur tersimpan biasanya digunakan untuk melaksanakan beberapa logik perniagaan yang kompleks, yang boleh mengelak daripada melaksanakan sejumlah besar pernyataan SQL pada klien, dengan itu meningkatkan prestasi aplikasi.

Prosedur tersimpan dalam Oracle boleh ditulis menggunakan PL/SQL/SQL ialah bahasa pengaturcaraan prosedur yang menggabungkan penyataan SQL dengan ciri beberapa bahasa pengaturcaraan, membolehkan pembangun menggunakan gelung dan penyataan bersyarat dan pengendalian pengecualian fungsi.

Berikut ialah contoh prosedur tersimpan Oracle yang mudah:

CREATE OR REPLACE PROCEDURE sp_example(param1 IN NUMBER, param2 OUT NUMBER)
AS
BEGIN
    SELECT COUNT(*) INTO param2 FROM table1 WHERE column1 = param1;
END;
Salin selepas log masuk

Dalam contoh di atas, kami mentakrifkan prosedur tersimpan sp_example, yang menerima parameter input param1 dan Mengembalikan output parameter param2. Dalam prosedur tersimpan, kami menggunakan pernyataan SELECT, yang menanyakan bilangan rekod dalam jadual1 bahawa lajur1 adalah sama dengan param1, dan memberikan hasil kepada param2.

2. Pengenalan kepada pencetus Oracle

Pencetus Oracle ialah prosedur tersimpan khas yang boleh mencetuskan pelaksanaan secara automatik apabila data dalam pangkalan data berubah. Biasanya, pencetus digunakan untuk melaksanakan beberapa logik perniagaan yang memerlukan pemprosesan masa nyata, seperti mengira nilai medan tertentu, merekodkan log operasi, dsb.

Pencetus Oracle terbahagi kepada tiga jenis: SEBELUM pencetus, SELEPAS pencetus dan BUKANNYA pencetus. Pencetus SEBELUM mencetuskan sebelum data diubah suai, pencetus SELEPAS mencetuskan selepas data diubah suai, dan pencetus SEBALIKNYA menggantikan operasi pengubahsuaian data dan bukannya mencetuskan sebelum atau selepas pengubahsuaian data.

Berikut ialah contoh pencetus Oracle mudah:

CREATE OR REPLACE TRIGGER tr_example
AFTER INSERT ON table1
FOR EACH ROW
BEGIN
    INSERT INTO log_table (operation, timestamp) VALUES ('INSERT', SYSDATE);
END;
Salin selepas log masuk

Dalam contoh di atas, kami mentakrifkan pencetus SELEPAS INSERT tr_example, apabila item baharu dimasukkan ke dalam jadual table1 Apabila pengelogan, pencetus menulis jenis operasi dan cap masa ke jadual log_table. Selain itu, kami juga menggunakan pembolehubah khas SYSDATE, yang mewakili masa sistem semasa.

3. Contoh aplikasi prosedur dan pencetus yang disimpan Oracle

Prosedur dan pencetus yang disimpan Oracle digunakan secara meluas di bawah.

  1. Penomboran automatik

Dalam sesetengah senario perniagaan, kita perlu menomborkan medan tertentu secara automatik. Pada masa ini, anda boleh menggunakan pencetus Oracle untuk melaksanakan fungsi penomboran automatik.

Pertama, kita perlu mencipta objek jujukan dalam pangkalan data, yang boleh menjana jujukan nombor yang unik. Berikut ialah contoh mencipta jujukan:

CREATE SEQUENCE seq_example;
Salin selepas log masuk

Seterusnya, kami mencipta pencetus yang akan menetapkan nilai seterusnya bagi jujukan kepada medan yang ditentukan apabila rekod baharu dimasukkan. Berikut ialah contoh kod:

CREATE OR REPLACE TRIGGER tr_example
BEFORE INSERT ON table1
FOR EACH ROW
BEGIN
    SELECT seq_example.NEXTVAL INTO :NEW.id FROM dual;
END;
Salin selepas log masuk

Dalam kod di atas, kami menggunakan pencetus SEBELUM INSERT, yang dilaksanakan sebelum memasukkan rekod baharu, dan kemudian menggunakan kaedah NEXTVAL urutan untuk mendapatkan nilai seterusnya dan simpan nilai ini Ditugaskan ke medan id.

  1. Pengesahan Data

Dalam sesetengah senario, kami perlu mengesahkan data dalam pangkalan data untuk memastikan integriti dan ketepatan data. Pada masa ini, anda boleh menggunakan prosedur tersimpan Oracle untuk melaksanakan pengesahan data.

Berikut ialah contoh kod yang menunjukkan cara menulis prosedur tersimpan untuk mengesahkan sama ada kata laluan pengguna adalah betul:

CREATE OR REPLACE PROCEDURE sp_check_password(username IN VARCHAR2, password IN VARCHAR2)
AS
    valid_password NUMBER;
BEGIN
    SELECT COUNT(*) INTO valid_password FROM users WHERE username = username AND password = password;
    IF valid_password = 0 THEN
        RAISE_APPLICATION_ERROR(-20001, 'Invalid username or password');
    END IF;
END;
Salin selepas log masuk

Dalam kod di atas, kami mentakrifkan prosedur tersimpan sp_check_password, yang menerima dua parameter input: nama pengguna dan kata laluan. Kemudian, kami menggunakan pernyataan SELECT untuk bertanya sama ada pengguna dan kata laluan yang ditentukan wujud dalam jadual pengguna Jika ia wujud, valid_password diberikan nilai 1, jika tidak, ia adalah 0. Akhir sekali, kami menggunakan pernyataan IF untuk menentukan nilai valid_password Jika 0, pengecualian dilemparkan, menunjukkan bahawa nama pengguna atau kata laluan adalah salah.

4. Ringkasan

Prosedur dan pencetus yang disimpan Oracle ialah alatan penting dalam pembangunan pangkalan data. Apabila menggunakan prosedur tersimpan dan pencetus, pembangun perlu memberi perhatian kepada kesannya terhadap prestasi pangkalan data dan mengelakkan penyalahgunaannya. Pada masa yang sama, pembangun juga perlu mahir dalam ciri bahasa PL/SQL dan pangkalan data Oracle untuk memastikan prosedur tersimpan dan pencetus boleh melaksanakan logik perniagaan dengan betul.

Atas ialah kandungan terperinci Analisis mendalam mengenai prosedur dan pencetus yang disimpan 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