Bonjour
je débute en PL/SQl et je galère
je souhaite décrire différents schémas relationnels (nom tables et contraintes) à partir d'une base Oracle 7.3.4 (oui très vieux, je suis en stage) et enregistrer toutes ces informations dans un fichiers excel ou csv
je souhaite donc passer en paramètre, le nom de la base à décrire
J'ai donc commencé par écrire les 4 requêtes ci-dessous qui me permettront de récupérer les informations que je souhaite
-- liste des tables de la base que j'utiliserai dans un curseur
SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER like nomDeMaBase;
-- Description de la table
-- Description des contraintes
1 2 3
| SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE, SEARCH_CONDITION, R_CONSTRAINT_NAME
FROM ALL_CONSTRAINTS
WHERE OWNER like nomDeMaBase AND TABLE_NAME like nomDeMaTable; |
1 2 3 4
| SELECT CONSTRAINT_NAME, COLUMN_NAME, POSITION
FROM ALL_CONS_COLUMNS
WHERE OWNER like nomDeMaBase AND TABLE_NAME like nomDeMaTable;
; |
Ensuite, j'ai écrit une première procédure stockée qui me retourne la liste des tables de la base passée en paramètre et elle fonctionne
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
CREATE OR REPLACE PROCEDURE descriptionBase(nom varchar2)
IS
c_nom_table varchar2(25);
CURSOR c_base IS SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER=nom;
BEGIN
OPEN c_base;
LOOP
FETCH c_base INTO c_nom_table;
EXIT WHEN c_dms%NOTFOUND;
DBMS_OUTPUT.PUT_LINE (c_nom_table);
-- SELECT CONSTRAINT_NAME FROM ALL_CONSTRAINTS WHERE OWNER=nom AND TABLE_NAME=c_nom_table;
END LOOP;
CLOSE c_dms;
END;
/ |
Mais à partir de là je bloque sur
1. comment écrire dans un fichier txt (ou excel) : j'ai lu sur la commande UTL_FILE mais je n'ai pas les droits suffisants pour créer un répertoire
2. utiliser mon curseur pour lancer les 3 autres requêtes : lorsque j'ajoute un select (ligne commentée dans la procédure ci-dessus) j'ai une erreur de compilation
d'avance merci pour votre aide (et votre indulgence, je part vraiment de 0 en PL/SQL)
Partager