我在創建視圖的過程中有一個動態sql。如果我打印字符串並手動執行,我可以創建視圖。但是,在該過程中,由於特權不足而引發異常。我已經授予執行,創建,所有程序給用戶,但它仍然不起作用。有什麼建議麼?Oracle授予執行權限
1
A
回答
5
在包內部,間接(通過角色)授予的特權被刪除。您必須直接向帳戶授予底層對象必需的權限;例如:
conn sys/[email protected] as sysdba
create user A identified by A;
grant connect, dba to A;
conn A/[email protected]
create table test_tab(pk number);
conn sys/[email protected] as sysdba
create user B identified by B;
grant connect, dba to B;
conn B/[email protected]
select * from A.test_tab; -- this works
create or replace procedure do_it as
l_cnt pls_integer;
begin
select count(*) into l_cnt from A.test_tab; -- error on compile
end;
在這個例子中,你需要一個
grant select on A.test_tab to B;
,使其工作(不要緊您是否使用動態或靜態SQL)。
3
我的猜測基於您提供的信息很少,是程序運行時使用了定義者權限(默認值),程序的所有者沒有創建視圖所需的權限。您的案例中的合適解決方案是否使用調用者權限創建過程或向過程所有者授予其他特權尚不清楚。
發佈實際代碼總是有幫助的。程序是否具有定義者或調用者權限?應該創建哪個模式視圖?你執行的實際授權聲明是什麼?
相關問題
- 1. 授予Oracle授予權限
- 2. Oracle - 授予用戶權限
- 3. Oracle自動授予權限
- 4. Oracle權限授予SQl Plus
- 5. 如何授予在Oracle中授予權限的權限
- 6. 權限需要授予執行
- 7. 執行權限授予不上表
- 8. 授予SQL Azure上的執行權限
- 9. 如何在Oracle中爲dbms_lock授予執行權限?
- 10. 選擇並更新授予權限oracle
- 11. 授予SQL存儲過程權限執行權限
- 12. MySQL - 授予權限
- 13. mysql授予權限
- 14. 授予LIST權限
- 15. 授予dbms_crypto權限
- 16. 如何將權限授予Oracle中的一行?
- 17. 授予權限,如Linux
- 18. 如何授予discoverUserInfoWithUserRecordID權限?
- 19. perl DBI授予權限
- 20. 授予權限的路徑
- 21. 授予MSI安裝權限
- 22. ANDROID未授予權限
- 23. 授予權限時出錯
- 24. PackageManager:未授予權限
- 25. 甲骨文授予權限
- 26. 默認授予權限
- 27. 無法授予FINE_LOCATION權限
- 28. MySql授予用戶權限
- 29. 授予只讀權限
- 30. 授予ClickOnce System.Web.AspNetHostingPermission權限?