Bonjour,
Je suis actuellement en train d'écrire une procédure PL/SQL qui reçoit en paramètre un VARCHAR2 contenant une requête SQL
Tel que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT col1,col2,col3 FROM maTable; ou SELECT * FROM maTable; etc.
J'étais parti sur une solution avec "DBMS_SQL" et son "DESCRIB_COLUMNS" ce qui me retournait au lieu du nom du type (varchar, number, etc) une valeur numérique lui correspondant.
Malheureusement, je n'ai pas trouvé dans le dictionnaire la table faisant la lisaison entre ces chiffres et les noms des types.
J'allais donc incorporé un "DECODE" ou des test "IF / ELSE IF" (comme on me l'a conseillé sur ce forum).
Pour cela il me fallait savoir quel chiffre correspondait à quel type, j'ai donc lancer un test et là horreur...
Tout les types numériques sont associé au même "numéro de type"...---------------------------------------------------
col_type = 2
col_name = NUMERO
---------------------------------------------------
col_type = 1
col_name = P_VARCHAR2
---------------------------------------------------
col_type = 96
col_name = P_CHAR
---------------------------------------------------
col_type = 96
col_name = P_NCHAR
---------------------------------------------------
col_type = 2
col_name = P_INTEGER
---------------------------------------------------
col_type = 2
col_name = P_FLOAT
---------------------------------------------------
col_type = 2
col_name = P_REAL
---------------------------------------------------
col_type = 2
col_name = P_DEC
---------------------------------------------------
col_type = 2
col_name = P_DECIMAL
---------------------------------------------------
col_type = 12
col_name = P_DATE
---------------------------------------------------
col_type = 180
col_name = P_TIMESTAMP
Me voilà donc repasser à la case départ..
Comment réussir à récupérer le nom des colonnes et leurs type dans une requête SQL qui est sous forme d'une variable VARCHAR2. Tout ça étant dans la procédure d'un package.
Merci d'avance !
Partager