Salut,
je sais pas si cela pourra t'aider mais sur oracle, on a un truc du style:
DECLARE
CURSOR c1 IS SELECT table_name FROM sys.USER_TAB_COLUMNS cols WHERE 1=1 AND cols.column_name LIKE '%Nom_DE_LA_Colonne_A_Chercher%';--recup des tables où on a la colonne
curs1 c1%ROWTYPE;
CURSOR c2(tabl IN VARCHAR) IS SELECT column_name FROM sys.USER_TAB_COLUMNS cols WHERE 1=1 AND cols.table_name=tabl;--recup de toutes les colonnes de la tables recupere par le premier curseur
curs2 c2%ROWTYPE;
BEGIN
OPEN c1;
FETCH c1 INTO curs1;
WHILE c1%FOUND LOOP --boucle tant que j'ai des tables
DECLARE
quer VARCHAR(32767);
q VARCHAR(32767);
qu VARCHAR(32767);
BEGIN
quer:='select ';
q:='DBMS_OUTPUT.PUT_LINE(';
OPEN c2(curs1.table_name);--on recuprer les colonnes de la table
FETCH c2 INTO curs2;
WHILE c2%FOUND LOOP --on construit la commande sql dynamique pour récupéré ensuite les données
quer:=quer||' '||curs2.column_name||',';
q:=q||'cTyp.'||curs2.column_name||' ||';
FETCH c2 INTO curs2;
END LOOP;
CLOSE c2;
quer:=SUBSTR(quer,0,INSTR(quer,',',-1,1)-1);
q:=SUBSTR(q,0,INSTR(q,'|',-1,2)-1);
q:=q||');';
quer:=quer||' '||'from '||curs1.table_name||' where mon_champ=valueur;';
qu:='DECLARE CURSOR CurTyp is '||quer||'cTyp CurTyp%ROWTYPE;BEGIN ';
qu:=qu||'OPEN CurTyp;FETCH CurTyp INTO cTyp;';
qu:=qu||'WHILE CurTyp%FOUND LOOP '||q||'FETCH CurTyp INTO cTyp;END LOOP;CLOSE CurTyp;END;';
EXECUTE IMMEDIATE qu;
END;
FETCH c1 INTO curs1;
END LOOP;
CLOSE c1;
END;
En gros, on recupere les tables où tu as la colonne voulue, ensuite on recupere les colonnes de la table, on consrtuit la requete sql et on va afficher le resultat...
Je pense que la syntaxe sera legerement differente en MSSQL, mais tu peux t'en inspirer peut-etre...
@+
Sur un malentendu, ca peut marcher!!