Oracle

對象引用中的顯式使用者名

  • January 5, 2021

我們的大部分程式碼——無論是在外部程序中還是在儲存過程中——在引用各種 DB 對象時都使用明確的使用者名:

SELECT * FROM prod.object

或者

prod.StoredProcedure(.....)

這會導致明顯的問題,當數據庫的副本被載入到具有不同名稱的模式中時——同一個對象現在變成qa.object了……

我建議,我們完全放棄這種顯式引用,而只引用objectand StoredProcedure

但是,當另一個帳戶(例如prod_ro)登錄並嘗試執行prod的儲存過程或瀏覽prod的表時,這會導致問題。

人們如何處理這種情況?

您可以使用

alter session set current_schema=qa;

然後,對未使用模式限定的對象的所有引用都將被視為您編寫了qa.object. 您仍然需要必要的權限才能使用相關對象。

引用自:https://dba.stackexchange.com/questions/282623