डायनेमिक SQL का उपयोग करने से बचने का सबसे आसान तरीका समानार्थी शब्द बनाना होगा।
CREATE OR REPLACE SYNONYM MyTableRemote
FOR [email protected]_link
तब आपकी संग्रहीत कार्यविधियाँ केवल पर्यायवाची MyTableRemote
. का संदर्भ लेंगी . तब आपके पास एक अलग विधि हो सकती है जिसने डेटाबेस लिंक नाम को एक पैरामीटर के रूप में लिया और डेटाबेस लिंक पर इंगित करने के लिए सभी समानार्थक शब्द बदल दिए।
PROCEDURE replace_synonyms( p_db_link IN VARCHAR2 )
AS
BEGIN
-- Adjust the query to identify all the synonyms that you want to recreate
FOR syn IN (SELECT *
FROM user_synonyms
WHERE db_link IS NOT NULL)
LOOP
EXECUTE IMMEDIATE
'CREATE OR REPLACE SYNONYM ' || syn.synonym_name ||
' FOR ' || syn.table_owner || '.' || syn.table_name || '@' || p_db_link;
END LOOP;
END;