Bonjour !
Je suis actuellement en train d'écrire une procédure PL/SQL analysant une requête SQL donnéee (ici en dur pour l'exemple).
Celle-ci devrat afficher le nom et le type des colonnes "citées" dans la requête (voir ci-dessous).
Résultat de l'affichage
Ma question est la suivante; le type des colonnes (col_type) est donnés sous format numérique soit :-------------------------------------
col_type = 2
col_name = maColonne1
-------------------------------------
col_type = 1
col_name = maColonne2
"1" pour "NUMBER",
"2" pour "VARCHAR2",
etc.
Ce qui suppose que quelque part dans le dictionnaire, une table définit ces liaisons. Malheureusement j'ai beau eu chercher sur internet et parcourirs le dictionnaire, je n'ai pas réussi à trouver..
Est-ce que quelqu'un la connaitrait ?
Voici le code utilisé pour arriver au résultat ci-dessus avec la fonction "DBMS_SQL.describe_columns", ....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 curseur number; nbr_col integer; les_colonnes dbms_sql.desc_tab; procedure decrit_la_colonne(rec IN dbms_sql.desc_rec) IS begin dbms_output.put_line('-----------------------------------------------'); dbms_output.put_line('col_type = ' || rec.col_type); dbms_output.put_line('col_name = ' || rec.col_name); end; begin curseur := dbms_sql.open_cursor; dbms_sql.parse(curseur, 'SELECT maColonne1, maColonne2, maColonne3 etc FROM maTable', dbms_sql.native); dbms_sql.describe_columns(curseur, nbr_col, les_colonnes); -- Description des colonnes de la reqête FOR j IN 1..nbr_col Loop decrit_la_colonne(les_colonnes(j)); End Loop; dbms_sql.close_cursor(curseur);
Partager