Prosedur tersimpan ialah atur cara pangkalan data pra-disusun yang mengandungi satu set pernyataan SQL dan pernyataan kawalan yang boleh dipanggil apabila diperlukan. Artikel ini akan memperkenalkan pengetahuan asas dan contoh prosedur tersimpan pangkalan data Oracle.
1. Asas prosedur tersimpan
1.1 Kelebihan prosedur tersimpan
Prosedur tersimpan ialah kaedah yang berkesan untuk meningkatkan prestasi pangkalan data. Mereka meningkatkan kecekapan interaksi aplikasi dengan pangkalan data kerana penyata SQL disusun awal pada bahagian pangkalan data, membolehkan mereka menyelesaikan operasi dengan lebih cepat apabila dipanggil. Ia juga meningkatkan keselamatan data kerana prosedur tersimpan boleh melakukan semakan kebenaran sebelum mencipta dan mengubah suai data dalam pangkalan data.
1.2 Penciptaan prosedur tersimpan
Anda boleh menggunakan alatan pembangunan Oracle SQL untuk mencipta prosedur tersimpan. Oracle SQL Developer dan SQL Plus adalah alat yang biasa digunakan.
Berikut ialah sintaks asas untuk mencipta prosedur tersimpan:
BUAT [ATAU GANTI] PROCEDURE procedure_name
([parameter_name IN/OUT datatype [, parameter_name IN/OUT datatype …] ])
IS
BERMULA
penyataan;
EXCEPTION
exception_handler;
END;
Antaranya, parameter adalah pilihan, '[ ATAU REPLACE]' arahan Anda boleh menentukan bahawa aplikasi mesti wujud dan mengekalkan keadaan prosedur yang disimpan.
1.3 Parameter input dan output prosedur tersimpan
Prosedur tersimpan boleh menerima parameter input dan parameter output. Parameter input boleh digunakan untuk melaksanakan operasi bersyarat dalam prosedur tersimpan atau untuk menghantar data kepada prosedur tersimpan. Parameter output digunakan untuk mengembalikan maklumat seperti nilai atau nilai tertentu dalam proses output.
Begini cara beberapa parameter berinteraksi:
DALAM: Parameter input digunakan untuk menghantar nilai kepada prosedur yang disimpan.
KELUAR: Parameter output tidak digunakan untuk data input, tetapi boleh mengembalikan nilai melalui prosedur tersimpan.
INOUT: Parameter input/output membenarkan nilai dihantar sebagai parameter dan ditukar melalui nilai pulangan pelaksanaan prosedur tersimpan.
1.4 Pengendalian pengecualian prosedur tersimpan
Prosedur tersimpan boleh mengendalikan pengecualian seperti fungsi. Apabila ralat berlaku dalam prosedur tersimpan, anda boleh menyediakan pengendalian pengecualian. Ia boleh melaksanakan pengurusan mesej ralat tersuai dan menggunakan gelagat tertentu untuk menyerahkan ralat ini apabila ralat berlaku.
Berikut ialah sintaks asas untuk mencipta pengendalian pengecualian:
ISYTIHKAN
exception_name EXCEPTION;
PRAGMA EXCEPTION_INIT (exception_name, error_code);
MULAI
pernyataan ;
PENGECUALIAN
WHEN exception_name THEN statement(s);
TAMAT;
2. Contoh prosedur tersimpan
Berikut ialah beberapa contoh prosedur tersimpan biasa:
2.1 Prosedur tersimpan Pertanyaan ringkas
Berikut ialah contoh prosedur tersimpan ringkas, yang akan mengeluarkan data yang memenuhi syarat dalam jadual:
BUAT ATAU GANTIKAN PROSEDUR get_emp_data
(
ID DALAM NOMBOR,
NAMA KELUAR VARCHAR2,
GAJI KELUAR NOMBOR
)
ADALAH
BERMULA
PILIH nama_pekerja,gaji KE DALAM NAMA,GAJI DARI pekerja WHERE employee_id = ID;
TAMAT;
Atas prosedur tersimpan di atas perlu lulus dalam 2 parameter: ID ialah parameter input yang diperlukan, yang mentakrifkan ID pekerja yang mana maklumat akan ditanya manakala nama dan gaji ialah parameter output , yang menerima nilai lajur yang sepadan dalam hasil pertanyaan.
Dapatkan nilai parameter output prosedur tersimpan Anda boleh memanggil prosedur tersimpan seperti fungsi:
DECLARE
emp_name VARCHAR2(20);
emp_gaji NUMBER(. 10,2);
BEGIN
get_emp_data (100,emp_name,emp_gaji);
DBMS_OUTPUT.PUT_LINE('Nama: ' || emp_name);
DBMS_OUTPUT.PUT_LINE('Gaji: ' ||. emp_gaji);
END;
Dalam kod di atas, ID parameter prosedur tersimpan ditetapkan kepada 100, jadi nama dan gaji pekerja akan dikembalikan.
2.2 Operasi sisipan prosedur tersimpan
Berikut ialah contoh prosedur tersimpan, yang melaksanakan fungsi memasukkan baris data ke dalam senarai pekerja yang ditentukan:
BUAT ATAU GANTIKAN PROSEDUR add_pekerja
(
ID DALAM NOMBOR,
NAMA DALAM VARCHAR2,
UMUR DALAM NOMBOR,
GAJI DALAM NOMBOR
)
SEDANG
BERMULA
> MASUKKAN KE DALAM NILAI pekerja ( ID, NAMA, UMUR, GAJI);
KOMIT;
DBMS_OUTPUT.PUT_LINE('Pekerja ditambah.');
PENGECUALIAN
BILA ORANG LAIN MAKA
TAMAT;
Atas prosedur tersimpan di atas memerlukan 4 parameter input: ID pekerja, nama pekerja, umur pekerja dan gaji pekerja, yang kemudiannya dimasukkan ke dalam jadual "pekerja". Apabila sisipan berjaya, mesej "tambah pekerja" akan digesa, dan apabila sisipan gagal, mesej "Ralat menambah pekerja" akan digesa.
2.3 Kemas kini operasi prosedur tersimpan
Contoh berikut menyediakan fungsi meningkatkan gaji pekerja dengan ID tertentu dalam jadual pekerja sebanyak 10%:
CIPTA ATAU MENGGANTIKAN PROSEDUR kenaikan_gaji_pekerja
(
ID DALAM NOMBOR
)
IS
KURSOR c_gaji_pekerja IS
DBMS_OUTPUT.PUT_LINE('Error adding employee.');
v_gaji_pekerja BILANGAN;<🎜 BILANGAN_gaji_pekerja;<🎜
AMBIL c_gaji_pekerja KE DALAM v _gaji_pekerja;
v_gaji_pekerja := v_gaji_pekerja * 1.1;
KEMASKINI gaji SET pekerja = v_gaji_pekerja DI MANA _id_pekerja = ID ;
UTP. meningkat.' );
PENGECUALIAN
APABILA TIADA_DATA_TERJUMPA MAKA
SELECT salary FROM employees WHERE employee_id = ID;
DBMS_OUTPUT.PUT_LINE('Employee not found.');
Contoh prosedur tersimpan di atas memerlukan 1 parameter input: ID pekerja, ia mendapat gaji pekerja berdasarkan ID pekerja, darabkannya dengan 1.1 dan mengemas kininya ke jadual. Apabila dikemas kini dengan betul, mesej "gaji dinaikkan" akan digesa; apabila pekerja tidak ditemui, mesej "pekerja tidak dijumpai" akan digesa apabila ralat lain berlaku, mesej "ralat kenaikan gaji" akan digesa.
Ringkasan
Dalam artikel ini, kami memperkenalkan asas prosedur tersimpan pangkalan data Oracle dan beberapa contoh. Prosedur tersimpan boleh meningkatkan prestasi pangkalan data dan keselamatan data, dan sangat berguna untuk tugasan yang perlu dilakukan dengan kerap. Melalui beberapa contoh, anda boleh lebih memahami cara mencipta dan menggunakan prosedur tersimpan Oracle.
Atas ialah kandungan terperinci Contoh prosedur tersimpan oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!