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

Người dùng lược đồ Oracle không thể tạo bảng trong thủ tục

Câu trả lời cho câu hỏi trước mắt của bạn là bạn nhận được ORA-01031: insufficient privileges bởi vì người dùng của bạn có đặc quyền CREATE TABLE được cấp thông qua một vai trò:mô hình bảo mật Oracle thực thi một quy tắc mà chúng tôi không thể sử dụng các đặc quyền được cấp thông qua các vai trò trong PL / SQL. Vì vậy, bạn cần DBA của mình để trực tiếp cấp đặc quyền TẠO BẢNG cho người dùng của bạn.

Hay bạn?

Bởi vì những gì bạn đang cố gắng làm không có ý nghĩa trong Oracle. Trong Oracle, các bảng tạm thời toàn cầu là vĩnh viễn cấu trúc; nó chỉ là dữ liệu tạm thời trong đó. Vì vậy, giải pháp chính xác là xây dựng bảng một lần với một tập lệnh DDL bình thường, giống như bất kỳ đối tượng cơ sở dữ liệu nào khác. Sau đó, bạn có thể chỉ cần chèn vào bảng tạm thời chung khi cần.

Bạn không phải là người đầu tiên trên trang web này mắc lỗi này (hãy đọc chủ đề thích hợp này). Thường là do mọi người đến từ một cơ sở dữ liệu khác, chẳng hạn như SQL Server có cấu trúc gọi là "bảng tạm thời" thực sự khác với các bảng tạm thời toàn cầu của Oracle. Nếu đó là kịch bản của bạn thì bạn sẽ quan tâm đến một tính năng mới của Oracle 18c có tên là Private Temporary Tables. Đây chính xác là những bảng tạm thời của SQL Server. Tìm hiểu thêm.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SSIS - không thể chuyển đổi giá trị do có khả năng mất dữ liệu

  2. Các ràng buộc khóa ngoại có ảnh hưởng đến việc chuyển đổi truy vấn trong Oracle không?

  3. Oracle 11g Express Edition dành cho Windows 64bit?

  4. Kích thước tối đa của VARCHAR2 trong PL / SQL và SQL là bao nhiêu?

  5. Khắc phục lỗi cột thả trong Oracle 18c và 19c