Rumah >pangkalan data >Oracle >Contoh terperinci prosedur tersimpan Oracle dan jika bersarang

Contoh terperinci prosedur tersimpan Oracle dan jika bersarang

PHPz
PHPzasal
2023-04-18 09:06:562468semak imbas

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!

Kenyataan:
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