0

我有一個架構package'PKG_PARTITION_MAINTENANCE:「SAB_OWN」 ,我給執行權限給用戶象下面這樣:如何調用一個包,是屬於另一個用戶

GRANT EXECUTE ON PKG_PARTITION_MAINTENANCE TO SAB_READ_USER; 

但當用戶試圖調用它得到如下錯誤的包:

EXECUTE PKG_PARTITION_MAINTENANCE.ADD_TABLE_PARTITIONS('tbl_name'); 

錯誤:

[Error] Execution (3: 7): ORA-06550: line 1, column 7: 
PLS-00201: identifier 'PKG_PARTITION_MAINTENANCE.ADD_TABLE_PARTITIONS' must be declared 
ORA-06550: line 1, column 7: 
PL/SQL: Statement ignored 

是我缺少的東西,爲什麼用戶SAB_READ_USER無法執行它?此包在SAB_OWN架構中運行良好。

回答

2

你必須告訴甲骨文其架構對象所屬的,如果不是在架構中你登錄到像這樣:

EXECUTE SAB_OWN.PKG_PARTITION_MAINTENANCE.ADD_TABLE_PARTITIONS('tbl_name'); 

您還可以創建,而不是一個同義詞:

create synonym PKG_PARTITION_MAINTENANCE for SAB_OWN.PKG_PARTITION_MAINTENANCE; 

這就像一個指示器,告訴Oracle在哪裏尋找被調用的對象。

或者,你可以改變你的會話,這樣,你在「看」的模式是一個不同的你登錄的一個:

alter session set current_schema = SAB_OWN; 

最後兩個選項應該允許您運行該包沒有明確指出架構名稱,儘管個人而言,我不會推薦他們 - 我會明確指出架構名稱,除非有充分的理由說明爲什麼不行!

+0

謝謝你..工作。 – sabya

相關問題