Oracle
對象引用中的顯式使用者名
我們的大部分程式碼——無論是在外部程序中還是在儲存過程中——在引用各種 DB 對象時都使用明確的使用者名:
SELECT * FROM prod.object
或者
prod.StoredProcedure(.....)
這會導致明顯的問題,當數據庫的副本被載入到具有不同名稱的模式中時——同一個對象現在變成
qa.object
了……我建議,我們完全放棄這種顯式引用,而只引用
object
andStoredProcedure
。但是,當另一個帳戶(例如
prod_ro
)登錄並嘗試執行prod
的儲存過程或瀏覽prod
的表時,這會導致問題。人們如何處理這種情況?
您可以使用
alter session set current_schema=qa;
然後,對未使用模式限定的對象的所有引用都將被視為您編寫了
qa.object
. 您仍然需要必要的權限才能使用相關對象。