Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Procedura usuwania tylko wtedy, gdy baza danych jest wyższa niż sysdate

ten warunek możesz dodać na początku procedury w następujący sposób -

PROCEDURE Remove_Customer(Customer_Id VARCHAR2) IS
  l_Order_Date DATE;
BEGIN
  BEGIN
    SELECT MAX(Delivery_Date)
      INTO l_Order_Date
      FROM Placed_Order
     WHERE Placed_Order.Fk1_Customer_Id = Customer_Id;
  EXCEPTION
    WHEN OTHERS THEN
      l_Order_Date := SYSDATE - 1;
  END;
  IF l_Order_Date < SYSDATE THEN
    DELETE FROM Order_Line
     WHERE Order_Line.Fk1_Order_Id IN
           (SELECT Order_Id
              FROM Placed_Order
             WHERE Placed_Order.Fk1_Customer_Id = Customer_Id);
    DELETE FROM Placed_Order
     WHERE Placed_Order.Fk1_Customer_Id = Customer_Id;
    DELETE FROM Customer WHERE Customer.Customer_Id = Customer_Id;      
    --Total_Customers := Total_Customers - 1; -- is it a global variable in the package?
  ELSE
    Dbms_Output.Put_Line('Customer currently has a order been delivered');
  END IF;
END;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 40 pytań, które musisz wiedzieć o R12.2

  2. Parametry połączenia Oracle ze znakiem @ w haśle

  3. Dowiedz się, którzy pracownicy byli nieobecni przez 3 kolejne dni

  4. Jak zmienić domyślne parametry NLS dla formatu daty za pomocą Toad?

  5. Query Help - Ciąg, w którym klauzula ma &znak