sql >> Database teknologi >  >> RDS >> Oracle

Procedure for kun at slette, hvis databasen er højere end sysdate

denne betingelse kan du tilføje i starten af ​​proceduren som følger -

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. Oracle View vs sammenføjning af tabeller i Oracle

  2. Brug variabel indstillet af psql-metakommando inde i DO-blokken

  3. Hvordan opretter man et array fra dette resultatsæt (indlejrede kategorier gemt i databaseret med traversal model)?

  4. FEJL:matrixstørrelsen overstiger den maksimalt tilladte (1073741823)