我知道這是倒退,而是說我們有一個不靈活的工具或情況總是會在形式直接引用公共同義詞Oracle中
SELECT * FROM ${SCHEMA}.${TABLE};
現在說我們有一個表公共同義詞SELECT語句稱爲MY_TABLE,但在當前模式中沒有實際的MY_TABLE。這是我們的用戶是USER,但MY_TABLE的同義詞指向OTHER_USER.MY_TABLE。
請注意,這可以正常工作:select * from MY_TABLE UNION ALL select * from OTHER_USER.MY_TABLE;
我想這樣做
SELECT * FROM SYNONYMS.${TABLE};
有什麼我們可以放在$ {} SCHEMA將迫使甲骨文發現並解決的代名詞?我嘗試了以下文字 SQL語句試圖直接引用同義詞,但它們不起作用。
select count(*) from USER.MY_TABLE;
select count(*) from CURRENT_SCHEMA.MY_TABLE;
select count(*) from .MY_TABLE;
select count(*) from %.MY_TABLE;
請注意,我們必須參照代名詞,因爲我們改變同義詞經常以幫助生產安裝,因此我不能只把OTHER_USER在$ SCHEMA,因爲它可能是OTHER_USER或OTHER_USER2或OTHER_USER3用於之外的原因我的代碼的控制。
在用戶問題中,用戶是USER函數,還是實際用戶名 - 如果後者是否可以在問題中使用「USERA」來避免含糊不清? –
是的。因爲我的代碼在這種情況下必須有一些東西。這是一個愚蠢的情況,但將SOMETHING放在這裏將是處理僵化工具的最簡單/最好的方式。但是,'從SYS.MY_TABLE選擇計數(*)「沒有工作:('ORA-00942:表或視圖不存在' – bot403
嗯,是的,我應該檢查;你可以描述一個表,但不能從中選擇。 –