2011-12-22 26 views
6

Có hai lược đồ trong cơ sở dữ liệu Oracle.Bỏ qua "bảng hoặc chế độ xem không tồn tại" trong gói biên dịch

MYSCHEMA do tôi kiểm soát.

OTHERSCHEMA không được kiểm soát bởi tôi.

Tôi chỉ biết tôi có thể nhận được kết quả từ select * from OTHERSCHEMA.OTHEROBJECT. Tuy nhiên, OTHEROBJECT là một từ đồng nghĩa.

Trong gói của tôi, tôi có một tuyên bố như

insert into MYSCHEMA.MYTABLE(COL1) select COL1 from OTHERSCHEMA.OTHEROBJECT; 

Nhưng nó đã cho tôi Table or view does not exist.

Làm thế nào tôi có thể giải quyết hoặc bỏ qua vấn đề này? Cảm ơn!

+0

bạn đang đăng nhập cho 'MYSCHEMA' và chạy 'select * from OTHERSCHEMA.OTHEROBJECT' Và nó hoạt động? Gói của bạn được biên dịch theo 'MYSCHEMA'? Bạn đã thử chạy câu lệnh chèn bên ngoài gói như một câu lệnh độc lập - điều đó có hoạt động không? –

Trả lời

11

Tôi giả sử bạn nhận được đặc ân để chọn từ otherschema.otherobject bằng một vai trò như opposted để tài trợ trực tiếp (như grant all on otherschema.otherobject to myschema). Nếu đúng như vậy, các đặc quyền trong vai trò này sẽ không được sử dụng để xác định những quyền nào bạn có trong một khối PL/SQL.

Xem thêm How Roles Work in PL/SQL Blocks (Oracle docu, nơi nó nói dưới Vai trò Được sử dụng trong tên Blocks với Quyền Definer của:

Tất cả các vai trò bị vô hiệu hóa trong bất kỳ khối tên PL/SQL (stored procedure, function, hoặc kích hoạt), được thực hiện với quyền DEFINER của. vai trò không được sử dụng cho đặc quyền kiểm tra và bạn không thể thiết lập vai trò trong thủ tục quyền của DEFINER.)

Các vấn đề liên quan