sql >> Database >  >> RDS >> Oracle

verwijder instructie die records niet verwijdert

Het zou als je het zou noemen, maar helaas doe je het niet.

Dit is geen SQL-probleem, het is een logisch probleem. Als we de afwas niet doen, blijft de vaat vies. Evenzo, als u de routine die de records verwijdert niet aanroept, worden de records niet verwijderd.

U moet de functie in de procedure aanroepen. Ik weet niet zeker waarom je er een functie van hebt gemaakt, en het compileert toch niet, omdat het geen RETURN-component heeft. Laten we dat dus ook oplossen.

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

Nu noemen we het:

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;

Dus wanneer u uw anonieme blokkering uitvoert, worden de bestaande studenten verwijderd en vervangen door de nieuwe.




  1. converteer datumstring naar mysql datetime-veld

  2. Java krijgt ResultSet van SQL Array is mislukt

  3. SQL:duplicaten verwijderen

  4. Op zoek naar advies over een gerelateerde video-query op een getagd videosysteem