Oracle
 sql >> база данни >  >> RDS >> Oracle

изтриване на изявление без изтриване на записи

Би било, ако го повикате, но уви не го правите.

Това не е SQL проблем, това е логически проблем. Ако не измием чиниите остават мръсни. По същия начин, ако не извикате рутината, която изтрива записите, записите не се изтриват.

Трябва да извикате функцията в процедурата. Не съм сигурен защо сте го направили функция и така или иначе няма да се компилира, защото няма клауза RETURN. Така че, нека поправим и това.

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

Сега го наричаме:

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;

Така че, когато стартирате своя анонимен блок, съществуващите ученици ще бъдат изтрити и заменени с новите.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получа фиктивна стойност за XML празен таг в таблица с помощта на Oracle?

  2. Отражение в PLSQL?

  3. SQL - Разширено премахване на дубликати с помощта на ID NOT IN

  4. Хибернация на оракул, @GeneratedValue(strategy =GenerationType.AUTO)

  5. Булево поле в Oracle