Rumah >pangkalan data >Oracle >Contoh terperinci prosedur tersimpan Oracle dan jika bersarang
Prosedur tersimpan Oracle ialah atur cara tersusun yang disimpan dalam pangkalan data yang boleh dipanggil oleh berbilang pengguna dan dikongsi antara berbilang aplikasi. Dalam prosedur tersimpan Oracle, pernyataan if ialah pernyataan kawalan bersyarat yang kerap digunakan Ia boleh melakukan beberapa operasi apabila keadaan adalah benar dan melakukan operasi lain apabila keadaan adalah palsu tulis pernyataan jika bersarang, dan anda boleh memilih cara yang berbeza mengikut situasi sebenar.
penyataan if-else ialah pernyataan if bersarang yang paling biasa Sintaks asasnya adalah seperti berikut:
if (condition1) statement1; else if (condition2) statement2; else if (condition3) statement3; else statement4;
Antaranya, condition1, condition2, condition3 ialah if conditions, statement1, statement2, pernyataan3, pernyataan4 masing-masing mewakili operasi yang perlu dilakukan apabila syarat yang berbeza dipenuhi.
Sebagai contoh, kita boleh melaksanakan prosedur tersimpan melalui kod berikut, yang digunakan untuk mencari gaji pekerja:
CREATE OR REPLACE PROCEDURE get_salary ( p_empno IN NUMBER, p_salary OUT NUMBER ) AS BEGIN IF p_empno < 1000 THEN p_salary := 1000; ELSE IF p_empno < 2000 THEN p_salary := 2000; ELSE p_salary := 3000; END IF; END IF; END;
Dalam prosedur tersimpan di atas, apabila p_empno kurang daripada 1000, p_gaji diberi nilai 1000; apabila p_empno adalah antara 1000 dan 2000, p_gaji diberi nilai 2000 apabila p_empno lebih besar daripada atau sama dengan 2000, p_gaji diberi nilai 3000;
Selain pernyataan if-else bersarang, kita juga boleh menggunakan pernyataan nested if untuk melaksanakan logik pengaturcaraan yang lebih kompleks. Sebagai contoh, contoh berikut menunjukkan cara menggunakan pernyataan if untuk mengendalikan status pesanan makanan:
CREATE OR REPLACE PROCEDURE update_order_status ( p_order_no IN NUMBER, p_status IN VARCHAR2 ) AS v_order_status VARCHAR2(10); BEGIN SELECT order_status INTO v_order_status FROM orders WHERE order_no = p_order_no; IF v_order_status = 'NEW' THEN IF p_status = 'APPROVED' THEN UPDATE orders SET order_status = 'APPROVED' WHERE order_no = p_order_no; ELSE UPDATE orders SET order_status = 'REJECTED' WHERE order_no = p_order_no; END IF; ELSIF v_order_status = 'APPROVED' THEN IF p_status = 'SHIPPED' THEN UPDATE orders SET order_status = 'SHIPPED' WHERE order_no = p_order_no; ELSE UPDATE orders SET order_status = 'CANCELED' WHERE order_no = p_order_no; END IF; ELSE RAISE_APPLICATION_ERROR(-20001,'The order is already shipped, cannot be updated.'); END IF; END;
Dalam prosedur tersimpan di atas, kami menggunakan pernyataan if bersarang untuk menentukan berdasarkan status pesanan semasa dan status yang perlu dikemas kini. Apabila status pesanan adalah 'BARU', jika anda perlu mengemas kini status pesanan kepada 'DILULUSKAN', laksanakan KEMASKINI pesanan SET status_perintah = 'DIluluskan' DI MANA pesanan_no = p_pesanan_no, kemas kini status pesanan kepada 'TOLAK'; status adalah Apabila 'DILULUSKAN', jika anda perlu mengemas kini status pesanan kepada 'DIHANTAR', laksanakan pesanan KEMASKINI SET status_pesanan = 'DIHANTAR' DI MANA pesanan_no = p_pesanan_no, jika tidak, kemas kini status pesanan kepada 'DIBATALKAN'; adalah 'DIHANTAR' , tiada kemas kini lanjut kepada status pesanan dibenarkan, jika tidak ralat permohonan akan dilemparkan.
Ringkasnya, pernyataan if dalam prosedur tersimpan Oracle adalah sangat fleksibel dan boleh disarangkan dan digunakan mengikut situasi sebenar untuk melaksanakan pelbagai logik pengaturcaraan yang kompleks. Apabila menggunakan pernyataan if, anda harus mentakrifkan keadaan dan operasi dengan jelas, dan cuba mengelakkan sarang yang terlalu dalam untuk mengelakkan kod daripada menjadi terlalu rumit dan sukar difahami.
Atas ialah kandungan terperinci Contoh terperinci prosedur tersimpan Oracle dan jika bersarang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!