Construcció de scripts amb ajuda del diccionari

És bastant habitual si es treballa amb bases de dades que sovint s'hagi de realitzar alguna tasca de creació o alteració d'estructures, anàlisis, recompilació, etc. sobre objectes de la base de dades. Per això se sol crear un script amb nombroses sentències DDL, en les quals la majoria de les vegades l'únic que canvia és el nom de l'objecte a tractar.
En aquests casos pot estalviar-nos molt treball la utilització del diccionari de la base de dades per construir aquestes sentències dinámicament.

Posarem com a exemple la creació d'un nou camp per emmagatzemar la data de creació dels registres en totes les taules d'un esquema d'una base de dades ORACLE. Per això utilitzaríem la següent sentència:

 SELECT 'ALTER TABLE ' || OWNER || '.' || TABLE_NAME || ' ADD FECHA_CREACION DATE DEFAULT SYSDATE;' FROM ALL_TABLES WHERE OWNER ='HR';El resultat seria alguna cosa com això:  ALTER TABLE HR.DEPARTMENTS ADD FECHA_CREACION DATE DEFAULT SYSDATE; ALTER TABLE HR.EMPLOYEES ADD FECHA_CREACION DATE DEFAULT SYSDATE; ALTER TABLE HR.JOB_HISTORY ADD FECHA_CREACION DATE DEFAULT SYSDATE; ALTER TABLE HR.JOBS ADD FECHA_CREACION DATE DEFAULT SYSDATE; ALTER TABLE HR.LOCATIONS ADD FECHA_CREACION DATE DEFAULT SYSDATE; ALTER TABLE HR.REGIONS ADD FECHA_CREACION DATE DEFAULT SYSDATE; ALTER TABLE HR.COUNTRIES ADD FECHA_CREACION DATE DEFAULT SYSDATE;

Ara només restaria guardar aquestes sentències en un script i executar-ho, o llançar-les directament des de l'aplicació que utilitzem per interactuar amb la nostra base de dades Pel qual hagi de (o prefereixi) treballar des d'un terminal o linea de comandos, la manera de fer això mateix amb SQLPLUS seria la
següent:

  SQL> SET HEADING OFF SQL> SET FEEDBACK OFF SQL> SPOOL C:\campo_auditoria.sql SQL> SELECT 'ALTER TABLE ' || OWNER || '.' || TABLE_NAME || ' ADD FECHA_CREACION DATE DEFAULT SYSDATE;' FROM ALL_TABLES WHERE OWNER ='HR'; SQL> SPOOL OFF; SQL> SET FEEDBACK ON SQL> SET HEADING ON I finalment executar el script generat, encara que és recomanable una revisió prèvia de les sentències generades SQL> @C:\campo_auditoria.sql

Cerca amb el motor de Google

Google