Bonjour,
Comment pourrai je faire un select sur une colonne dans une table
sachant que le nom de la colonne en question est stocké dans une variable ??
colname varchar2(10);
colname := 'colonne1';
select (colname) from tab1
where ....
merci d'avance
Bonjour,
Comment pourrai je faire un select sur une colonne dans une table
sachant que le nom de la colonne en question est stocké dans une variable ??
colname varchar2(10);
colname := 'colonne1';
select (colname) from tab1
where ....
merci d'avance
du SQL dynamique mais ça dépend ce que tu veux faire exactement (application, requête simple, etc.)








C'est à dire aller voir du coté de "EXECUTE IMMEDIATE" dans la doc PL/SQL ou bien jouer avec les spool s'ils s'agit de traitement simple par sqlplus...Envoyé par nuke_y
J'aimerai tester dans un "trigger sur update" si certaines colonnes ont changés de valeur
les colonnes en question sont dans une table de parametrage.
j'ai vu le sql dynamique ...
quand je construit ma requete dynamiquement et j'essaye de l'executer via EXECUTE IMMEDIATE il gueule,
c'est normal les rowtype new et old ont une portée (trigger)
si vous avez une idée ou un bout de code je suis preneur
merci encore








C'est un peu léger comme indice, je suppose qu'il se contente pas de faire "AAAAAAAHHHHHH!!" il doit bien te donner un message quand meme ?Envoyé par cyclone_yas
![]()
Sinon si c'est comparer des ancienne et nouvelles valeurs, il tu peux utlisiser :OLD et :NEW ... mais le problème c'est que ça se fait pas en dynamique c'est vrai.... donc tu pourra pas faire une fonction générique qui marchera pour toutes les tables...
voila le message d'erreur :
ORA-04092 : Pas de libelle dans TMESPEC
voila ce que je pense :
Quand je construit dynamiquement des requettes les objects utilisés sont dans la base tables, vues ... (portée globale)
là le problème, c'est que l'info est stoquée dans un rowtype (old et new) en memoire inaccessible depuis l'EXECUTE IMMEDIATE
je construit une requette semblable à :
requete := 'select 1 from dual where p_old.CAPINT != p_new.CAPINT OR p_old.CATSSJT != p_new.CATSSJT OR p_old.CATVAR1 != p_new.CATVAR1'
que j'execute :
EXECUTE IMMEDIATE requete into changed;
Partager