Untitled

 avatar
unknown
plain_text
10 months ago
812 B
1
Indexable
CREATE OR replace PROCEDURE cancel_order(
        orderid IN NUMBER,
        cancelstatus OUT NUMBER
    ) 
AS 
    orderstatus orders.status %TYPE;
BEGIN 
    -- Check if the order ID exists
    SELECT status INTO orderstatus
        FROM orders
        WHERE order_id = orderid;
IF orderstatus = 'Canceled' THEN 
    -- Order has already been canceled
    cancelstatus := 1;
ELSIF orderstatus = 'Shipped' THEN 
    -- Order is shipped and cannot be canceled
    cancelstatus := 2;
ELSE 
    -- Order can be canceled
    -- Update order status to 'Canceled'
    UPDATE orders
        SET status = 'Canceled'
        WHERE order_id = orderid;
        COMMIT;
    cancelstatus := 3;
END IF;
EXCEPTION
    WHEN no_data_found THEN 
        -- Order does not exist
        ROLLBACK;
        cancelstatus := 0;
END;
/
Leave a Comment