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

bảng hoặc chế độ xem oracle không tồn tại từ bên trong thủ tục được lưu trữ

Rất có thể, vấn đề là khoản tài trợ được thực hiện thông qua một vai trò. Các đặc quyền được cấp cho người dùng không khả dụng trong quy trình lưu trữ các quyền của người xác định (mặc định).

Trong SQL Developer, việc xác minh đây là sự cố tương đối dễ dàng. Nếu bạn chạy lệnh

SET ROLE none

và sau đó chạy câu lệnh SELECT, tôi mong rằng bạn sẽ gặp phải lỗi ORA-00942 tương tự.

Giả sử đúng như vậy, giải pháp thường là yêu cầu chủ sở hữu của các bảng trong lược đồ YYY cấp quyền truy cập trực tiếp vào các bảng cho bạn thay vì cấp quyền truy cập thông qua một vai trò. Ngoài ra, bạn có thể xác định thủ tục đã lưu trữ của mình như một thủ tục được lưu trữ các quyền của kẻ xâm lược bằng cách thêm AUTHID CURRENT_USER vào khai báo. Điều đó có nghĩa là người gọi thủ tục sẽ cần có quyền truy cập vào các đối tượng cơ bản nhưng nó sẽ cho phép thủ tục của bạn sử dụng các đặc quyền được cấp thông qua một vai trò.

Nếu bạn muốn tạo một thủ tục được lưu trữ quyền của kẻ xâm lược, bạn cũng sẽ cần tham chiếu đến tên bảng bằng cách sử dụng SQL động để hoãn kiểm tra đặc quyền trong thời gian chạy. Vì vậy, bạn sẽ có một cái gì đó giống như

CREATE OR REPLACE PROCEDURE PRC_SOMESP 
  AUTHID CURRENT_USER
AS 
  l_cnt pls_integer;
BEGIN
  EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM yyy.TableA' INTO l_cnt;
END PRC_SOMESP;

nếu bạn muốn một thủ tục lưu trữ các quyền của kẻ xâm lược đã truy vấn bảng TableA trong lược đồ XXX.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chức năng xếp hạng trong MySQL với mệnh đề Order By

  2. ORA-00918:cột được xác định không rõ ràng trong SELECT *

  3. Làm cách nào để sao chép hoặc nhập các lược đồ Oracle giữa hai cơ sở dữ liệu khác nhau trên các máy chủ khác nhau?

  4. Lỗi DYLD_LIBRARY_PATH của Oracle Instantclient

  5. Nhận ORA-03115:kiểu dữ liệu mạng không được hỗ trợ hoặc lỗi đại diện khi tìm nạp mảng varchar từ pl / sql ẩn danh