sql >> Databasteknik >  >> RDS >> Oracle

radera uttalande tar inte bort poster

Det skulle det om du ringde det, men det gör du tyvärr inte.

Detta är inte ett SQL-problem, det är ett logiskt problem. Om vi ​​inte diskar förblir disken smutsig. Om du inte anropar rutinen som raderar posterna tas inte posterna bort.

Du måste anropa funktionen i proceduren. Inte säker på varför du har gjort det till en funktion, och det kommer inte att kompilera ändå, eftersom det inte har en RETURN-klausul. Så låt oss fixa det också.

CREATE OR REPLACE FUNCTION DELETE_ALL_STUDENTS RETURN NUMBER AS
BEGIN
    DELETE FROM STUDENTS;
    return sql%rowcount; -- how many rows were deleted
END;
/

Nu kallar vi det:

create or replace PROCEDURE DELETE_ALL_STUDENTS_VIASQLDEV AS
    n number;  
BEGIN
    dbms_output.put_line('--------------------------------------------');
    dbms_output.put_line('Deleting all student rows');
    n := DELETE_ALL_STUDENTS;
    dbms_output.put_line('No of students deleted = '|| to_char(n));
END;

Så när du kör ditt anonyma block kommer de befintliga eleverna att tas bort och ersättas med de nya.




  1. Koppla till MySQL-klienten helt och hållet via FIFO

  2. BREAK-sats i PL/pgSQL

  3. WordPress WorkFlow-ändringar

  4. Databastips för nybörjare