Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

tuyên bố xóa không xóa bản ghi

Nó sẽ nếu bạn gọi nó, nhưng than ôi bạn không.

Đây không phải là một vấn đề SQL, nó là một vấn đề logic. Nếu chúng ta không rửa bát đĩa vẫn bẩn. Tương tự, nếu bạn không gọi quy trình xóa các bản ghi, các bản ghi sẽ không bị xóa.

Bạn cần gọi hàm trong thủ tục. Không chắc tại sao bạn lại biến nó thành một hàm và nó sẽ không biên dịch, bởi vì nó không có mệnh đề RETURN. Vì vậy, chúng ta cũng hãy khắc phục điều đó.

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

Bây giờ chúng tôi gọi nó là:

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;

Vì vậy, khi bạn chạy khối ẩn danh của mình, các sinh viên hiện tại sẽ bị xóa và thay thế bằng những sinh viên mới.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để định cấu hình vị trí tệp tnsnames Oracle của tôi?

  2. Dấu thời gian Oracle với các giá trị múi giờ địa phương dịch trong suốt

  3. Không thể chỉnh sửa Tệp cấu hình OHS trong Trình quản lý doanh nghiệp

  4. Đặt hàng theo giá trị 2 cột

  5. Làm thế nào để viết truy vấn chèn oracle được tham số hóa?