Comparer la structure en nom d'une table cible et une vue source
Bonjour,
Je souhaite créer une procédure stockée, permettant de comparer deux structures. En effet j'ai des tables cibles alimentées à partir des vues sources et je voudrais mettre un message d’erreur lorsque les structures sont différentes : les noms des colonnes dans la vue source sont identiques aux noms des colonnes de la table cible, sinon remonter un message d'erreur. Vous trouverez ci-dessous la requête sql à améliorer ou à transformer en PL/SQL :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| SELECT COALESCE(T.OWNER ,V.OWNER) AS TABLE_OWNER ,
COALESCE(V.OWNER ,T.OWNER) AS VIEW_OWNER ,
COALESCE(T.TABLE_NAME ,V.TABLE_NAME) AS TABLE_NAME ,
COALESCE(V.TABLE_NAME ,T.TABLE_NAME) AS VIEW_NAME ,
COALESCE(T.COLUMN_NAME ,V.COLUMN_NAME) AS TABLE_COLUMN_NAME ,
COALESCE(V.COLUMN_NAME ,T.COLUMN_NAME) AS VIEW_COLUMN_NAME ,
COALESCE(T.DATA_TYPE ,V.DATA_TYPE) AS DATA_TYPE,
COALESCE(V.DATA_TYPE ,T.DATA_TYPE) AS VIEW_DATA_TYPE
FROM all_tab_columns T
FULL OUTER JOIN all_tab_columns V
ON T.OWNER = V.OWNER
AND T.TABLE_NAME = SUBSTR(T.TABLE_NAME,1,4) || '_V_' || SUBSTR(V.TABLE_NAME,6)
ORDER BY TABLE_OWNER ASC |
Mes connaissances en programmation PL/SQL sont limitées.
Merci pour votre aide.