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

Thực thi cho mỗi bảng trong PLSQL

declare 
  cnt number;
begin
  for r in (select owner, table_name from all_tables
             where upper(table_name) like ('%MSRS%')) loop

    execute immediate 'select count(*) from "'
            || r.owner || '"."'
            || r.table_name || '"'
            into cnt;

    dbms_output.put_line(r.owner || '.' || r.table_name || ': ' || cnt);
  end loop;
end;
/

Nếu bạn đang chọn từ all_tables bạn không thể tin tưởng vào việc đã được cấp các khoản trợ cấp cần thiết để chọn từ tên bảng. Do đó, bạn nên kiểm tra ORA-00942: table or view does not exist đã xảy ra lỗi.

Về nguyên nhân gây ra lỗi của bạn:Bạn gặp lỗi này vì câu lệnh select trả về tập hợp kết quả có nhiều hơn một hàng (một hàng cho mỗi bảng) và bạn không thể gán tập kết quả như vậy cho varchar2.

Nhân tiện, hãy đảm bảo bạn bật dbms_output bằng SET SERVEROUT ON trước khi thực hiện khối này.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách sử dụng các điểm lưu trong thủ tục oracle

  2. Tại sao Vị trí 1 <> 1 trong một truy vấn sẽ trả về tất cả các hàng?

  3. SSDT trong Visual Studio 2015 Sự cố kết nối Oracle

  4. thiết lập Thông tin Khách hàng trong JDBC cho Oracle

  5. Tăng tốc to_sql () khi ghi Pandas DataFrame vào cơ sở dữ liệu Oracle bằng SqlAlchemy và cx_Oracle