我主要是一個oracle新手,所以請原諒我,如果這是一個愚蠢的問題...執行Oracle存儲過程作爲另一個用戶
我有一個名爲「CODE」採用存儲過程執行任意模式SQL(現在,請忽略與此相關的潛在安全問題)。傳入的SQL將選擇數據;但所有數據都駐留在模式A,B或C中 - 但SQL一次只能從一個模式中選擇。
例如:類型A的用戶創建一個字符串'SELECT * FROM A.USERTABLE' - 而類型B的用戶創建一個字符串'SELECT * FROM B.USERTABLE'。
我想要做的是允許用戶不明確指定他們的模式。在前端.net應用程序中;我已經知道他們是A型,B型還是C型。我希望所有三個人都簡單地輸入'SELECT * FROM USERTABLE'。
我遇到的問題是我不知道該怎麼做。我的應用只能在'CODE'模式下執行proc - 所以我不能只複製代碼並讓用戶A調用'A.ExecuteSQL'。
我試過幾件事;但到目前爲止沒有任何工作。我希望ExecuteSQL過程保持在CODE模式中;但是當'USERTABLE'通過時,我需要知道有時這意味着A.USERNAME,有時候B.USERNAME。
有什麼建議嗎?
這是如何工作的?第一個應用程序執行這個'ALTER'語句或者在'CODE'過程中執行這個語句? – Guru 2010-03-04 03:41:33
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:588045400346317188有更多信息。它看起來像你可以用你的存儲過程中的動態sql(立即執行)來完成它。 – 2010-03-04 04:24:22
@Guru:請參閱Rob P的AskTom鏈接 – 2010-03-04 04:49:01