sql >> Database >  >> RDS >> Oracle

Oracle-databasekoppelingen gebruiken zonder onleesbare dynamische SQL

De eenvoudigste manier om het gebruik van dynamische SQL te vermijden, is door synoniemen te maken.

CREATE OR REPLACE SYNONYM MyTableRemote
   FOR [email protected]_link

Uw opgeslagen procedures verwijzen dan gewoon naar het synoniem MyTableRemote . Je zou dan een aparte methode kunnen hebben die de naam van de databaselink als parameter nam en alle synoniemen veranderde om naar de databaselink te wijzen.

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;


  1. Write Skew-anomalie in Oracle en PostgreSQL maakt transactie niet ongedaan

  2. Kan geen verbinding maken met MySQL-server op 'localhost' (10061) na installatie

  3. Hoe u de dichtstbijzijnde datums kunt krijgen in Oracle sql

  4. paginatie telling bereik van producten op huidige pagina