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

usuń oświadczenie nie usuwając rekordów

Byłoby, gdybyś to nazwał, ale niestety nie.

To nie jest problem SQL, to problem logiczny. Jeśli nie zrobimy zmywania, naczynia pozostają brudne. Podobnie, jeśli nie wywołasz procedury, która usuwa rekordy, rekordy nie są usuwane.

Musisz wywołać funkcję w procedurze. Nie jestem pewien, dlaczego zrobiłeś z niej funkcję, a i tak się nie skompiluje, ponieważ nie ma klauzuli RETURN. Więc to też naprawmy.

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

Teraz nazywamy to:

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;

Tak więc, gdy uruchomisz anonimowy blok, dotychczasowi uczniowie zostaną usunięci i zastąpieni nowymi.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd adaptera protokołu TNS podczas uruchamiania Oracle SQL*Plus

  2. Oracle:Wyszukiwanie pełnotekstowe z warunkiem

  3. Dlaczego czas wykonywania procedury składowanej Oracle jest znacznie wydłużony w zależności od sposobu jej wykonania?

  4. Naruszone – nie znaleziono klucza nadrzędnego 02291. 00000 – ograniczenie integralności

  5. ResultSet.getString(Date) różni się w zależności od sterownika