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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.