Pangkalan data Oracle ialah sistem pengurusan pangkalan data perhubungan yang digunakan secara meluas oleh perusahaan utama Fungsi dan kestabilannya yang berkuasa digemari oleh orang ramai. Dalam proses pembangunan sebenar, pembangun selalunya perlu menulis prosedur tersimpan untuk melaksanakan pelbagai logik perniagaan, dan mungkin menghadapi beberapa masalah apabila menyahpepijat prosedur tersimpan.
Artikel ini akan memperkenalkan cara menyahpepijat prosedur tersimpan dalam pangkalan data Oracle.
1. Gunakan SQL Developer untuk menyahpepijat prosedur tersimpan
SQL Developer ialah alat pembangunan pangkalan data percuma yang disediakan secara rasmi oleh Oracle. Ia menyediakan penyahpepijat yang kuat yang boleh digunakan untuk menyahpepijat Prosedur storan PL/SQL , fungsi, pencetus, dsb. Di bawah ini kami akan mengambil prosedur tersimpan mudah sebagai contoh untuk menunjukkan cara menggunakan Pembangun SQL untuk menyahpepijat prosedur tersimpan.
1. Buat prosedur tersimpan
Pertama, kita perlu mencipta prosedur tersimpan yang mudah:
BUAT ATAU GANTIKAN PROSEDUR my_proc (p_input IN NUMBER, p_output OUT NUMBER) AS
BEGIN
p_output := p_input * 2;
END;
Prosedur tersimpan ini menerima parameter input p_input, dan mendarabkannya dengan 2 dan memberikannya kepada parameter output p_output. Dalam senario sebenar, prosedur tersimpan akan menjadi lebih kompleks, tetapi kaedah penyahpepijatan yang ditunjukkan dalam artikel ini juga boleh digunakan untuk prosedur tersimpan yang kompleks.
2. Tetapkan titik putus
Seterusnya, kita perlu menetapkan titik putus dalam prosedur tersimpan untuk menjeda aliran program dan menyemak nilai pembolehubah semasa pelaksanaan. Menetapkan titik putus dalam Pembangun SQL adalah sangat mudah Anda hanya perlu memilih baris di mana anda ingin menetapkan titik putus dalam kod prosedur tersimpan, dan kemudian klik pada kawasan kosong di sebelah nombor baris. Seperti yang ditunjukkan dalam imej di bawah, saya menetapkan titik putus pada baris 3.
3. Laksanakan prosedur tersimpan
Sekarang, kita boleh melaksanakan prosedur tersimpan dalam SQL Developer dan menjeda aliran program semasa proses berjalan untuk menyemak nilai pembolehubah. Kita boleh menggunakan kod berikut untuk melaksanakan prosedur tersimpan dan lulus nilai parameter:
DECLARE
v_input NUMBER := 10;
v_output NUMBER;
BEGIN
My_proc( v_input, v_output );
END;
Selepas melaksanakan kod ini, SQL Developer akan secara automatik membuka penyahpepijat dan menjeda atur cara pada baris 3, seperti yang ditunjukkan dalam rajah di bawah. Kita dapat melihat bahawa nilai v_input ialah 10, dan semasa pelaksanaan langkah demi langkah, nilai p_output juga diberikan kepada 20.
4. Semak nilai pembolehubah
Semasa program dijeda, kita boleh menyemak nilai setiap pembolehubah. Anda boleh melihat nilai pembolehubah dengan mengklik namanya dalam kod atau dengan menggunakan tetingkap Monitor. Dalam Pembangun SQL, anda boleh melihat nilai berbilang pembolehubah pada masa yang sama dengan memilih menu Nyahpepijat > Menyahpepijat Windows >
Seperti yang ditunjukkan dalam gambar di bawah, saya menambah v_input, v_output dan p_output pada tetingkap monitor, dan anda boleh melihat bahawa nilainya masing-masing ialah 10, 0 dan 0.
Kami kemudiannya boleh membiarkan atur cara meneruskan pelaksanaan sehingga titik putus seterusnya atau tamat program dengan mengklik butang "Teruskan Pelaksanaan" di bahagian atas tetingkap penyahpepijat.
2. Gunakan pakej DBMS_DEBUG untuk nyahpepijat prosedur tersimpan
Jika anda tidak mempunyai SQL Developer sebagai alat, anda juga boleh menggunakan pakej DBMS_DEBUG yang disediakan oleh Oracle untuk menyahpepijat prosedur tersimpan. Di bawah ini kami akan memperkenalkan cara menggunakan pakej DBMS_DEBUG.
Pakej DBMS_DEBUG ialah pakej alat yang disediakan oleh Pangkalan Data Oracle, yang melaluinya anda boleh menetapkan titik putus dalam prosedur tersimpan, menjeda aliran pelaksanaan program dan menyemak nilai pembolehubah program. Menyahpepijat prosedur tersimpan menggunakan pakej DBMS_DEBUG memerlukan langkah berikut:
1. Tetapkan pilihan kompilasi
Pertama, kita perlu menetapkan pilihan kompilasi dalam prosedur tersimpan supaya pakej DBMS_DEBUG boleh digunakan. Tambahkan pernyataan berikut sebelum kod prosedur tersimpan:
UBAH SET SESI PLSQL_DEBUG=TRUE;
2 Mulakan penyahpepijat
Seterusnya, kita perlu mula menyahpepijat masuk peranti prosedur yang disimpan. Tambahkan kod berikut pada prosedur tersimpan:
DBMS_DEBUG_DBMS_DEBUG.CONNECT_SESSION;
Kod ini akan memulakan penyahpepijat dan menunggu klien menyambung.
3 Sambungkan klien
Sekarang, kita perlu menyambung ke pangkalan data dalam klien dan menyambung kepada penyahpepijat yang baru kita mulakan. Dalam SQL Plus, anda boleh menggunakan arahan berikut untuk menyambung:
EXEC DBMS_DEBUG_JDWP.CONNECT_TCP(‘localhost’,4000);
Jika sambungan berjaya, "disambungkan" akan digesa.
4. Tetapkan titik putus
Selepas sambungan pelanggan berjaya, kami boleh menetapkan titik putus dalam prosedur tersimpan. Gunakan kod berikut untuk menetapkan titik putus dalam prosedur tersimpan:
DBMS_DEBUG_JDWP.BREAKPOINT(‘my_proc’,4);
Arahan ini akan menetapkan titik putus pada baris 4 prosedur tersimpan. my_proc ialah nama prosedur yang disimpan.
5. Laksanakan prosedur tersimpan
Sekarang kita boleh melaksanakan prosedur tersimpan dan menjeda atur cara semasa pelaksanaan untuk menyemak nilai pembolehubah.
Laksanakan kod berikut dalam SQL Plus:
DECLARE
v_input NUMBER := 10;
v_output NUMBER;
BEGIN
my_proc(v_input, v_output );
TAMAT;
Jika penyahpepijat disediakan dengan betul, atur cara akan berhenti seketika pada baris 4. Dalam keadaan dijeda, anda boleh menggunakan arahan berikut untuk menyemak nilai pembolehubah:
DBMS_DEBUG_JDWP.PRINT_VARIABLE('v_input');
DBMS_DEBUG_JDWP.PRINT_VARIABLE('v_output');
Kedua-dua Perintah ini boleh memaparkan nilai pembolehubah v_input dan v_output.
6. Teruskan
Selepas menyemak nilai pembolehubah, jika anda masih perlu meneruskan pelaksanaan program, anda boleh menggunakan arahan berikut:
DBMS_DEBUG_JDWP.CONTINUE;
Arahan ini akan membenarkan atur cara meneruskan melaksanakan sehingga titik gangguan seterusnya atau program tamat.
Ringkasan
Dalam pangkalan data Oracle, penyahpepijatan prosedur tersimpan adalah tugas yang agak biasa. Artikel ini memperkenalkan dua kaedah menyahpepijat prosedur tersimpan, menggunakan SQL Developer dan pakej DBMS_DEBUG. Tidak kira kaedah yang digunakan, anda boleh dengan mudah menetapkan titik putus dalam prosedur tersimpan, menjeda pelaksanaan program dan menyemak nilai pembolehubah, membantu pembangun mencari masalah dengan cepat dan membetulkan pepijat.
Atas ialah kandungan terperinci Bagaimana untuk menyahpepijat prosedur tersimpan dalam Oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!