>  기사  >  데이터 베이스  >  Oracle 저장 프로시저 및 중첩 여부에 대한 자세한 예

Oracle 저장 프로시저 및 중첩 여부에 대한 자세한 예

PHPz
PHPz원래의
2023-04-18 09:06:562450검색

Oracle 저장 프로시저는 여러 사용자가 호출하고 여러 애플리케이션 간에 공유할 수 있는 데이터베이스에 저장된 미리 컴파일된 프로그램입니다. Oracle 저장 프로시저에서 if 문은 조건이 참일 때 일부 작업을 수행하고 조건이 거짓일 때 다른 작업을 수행할 수 있는 자주 사용되는 조건 제어 문입니다. 중첩된 if 문을 작성하고 실제 상황에 따라 다른 방법을 선택할 수 있습니다.

if-else 문은 가장 일반적으로 사용되는 중첩 if 문입니다. 기본 구문은 다음과 같습니다.

if (condition1)
    statement1;
else if (condition2)
    statement2;
else if (condition3)
    statement3;
else
    statement4;

그 중 조건1, 조건2, 조건3은 if 조건이고, 문1, 문2, 문3, 문4는 각각 이를 나타냅니다. 다른 조건이 충족되면 실행해야 합니다.

예를 들어 직원의 급여를 찾는 데 사용되는 다음 코드를 통해 저장 프로시저를 구현할 수 있습니다.

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;

위 저장 프로시저에서 p_empno가 1000보다 작으면 p_salary에 1000 값이 할당됩니다. ; p_empno가 1000에서 2000 사이이면 p_salary에 2000 값이 할당되고, p_empno가 2000보다 크거나 같으면 p_salary에 3000 값이 할당됩니다.

중첩된 if-else 문 외에도 중첩된 if 문을 사용하여 더 복잡한 프로그래밍 논리를 구현할 수도 있습니다. 예를 들어 다음 예에서는 if 문을 사용하여 음식 주문 상태를 처리하는 방법을 보여줍니다.

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;

위의 저장 프로시저에서는 중첩된 if 문을 사용하여 현재 주문 상태와 상태를 기반으로 업데이트 작업을 결정합니다. 업데이트해야 합니다. 주문 상태가 'NEW'인 경우 주문 상태를 'APPROVED'로 업데이트해야 하는 경우 UPDATE 주문을 실행하세요. SET order_status = 'APPROVED' WHERE order_no = p_order_no; 그렇지 않은 경우 주문 상태를 'REJECTED'로 업데이트하세요. status가 'APPROVED'인 경우 주문 상태를 'SHIPPED'로 업데이트해야 하는 경우 UPDATE 주문을 실행하세요. SET order_status = 'SHIPPED' WHERE order_no = p_order_no; 그렇지 않으면 주문 상태가 'CANCELED'로 업데이트됩니다. 'SHIPPED' 이면 주문 상태에 대한 추가 업데이트가 허용되지 않습니다. 그렇지 않으면 애플리케이션 오류가 발생합니다.

간단히 말하면 Oracle 저장 프로시저의 if 문은 매우 유연하며 실제 상황에 따라 중첩 및 사용하여 다양하고 복잡한 프로그래밍 논리를 구현할 수 있습니다. if 문을 사용할 때는 조건과 연산을 명확하게 정의해야 하며, 코드가 너무 복잡하고 이해하기 어려워지지 않도록 너무 깊은 중첩을 피해야 합니다.

위 내용은 Oracle 저장 프로시저 및 중첩 여부에 대한 자세한 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.