Bonjour

Dans une procédure stockée, comment faire pour interpréter une variable de type Varchar comme un nom de colonne???

Exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
create table #test(id int)
insert into #test(id) values(0)
declare @nomColonne varchar(10)
set @nomColonne = 'id'
select @nomColonne from #test
drop table #test
Ce code retourne la chaine 'id' alors que je voudrais qu'il me retourne 0


En fait je voudrais comparer 2 entrées d'une table et afficher la liste des colonnes pour lesquelles les valeurs des 2 entrées sont différentes.

Voici mon code :
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
24
25
26
27
28
29
30
31
32
33
34
35
36
create proc ps_compareDevis
 @numDevis1 int,
 @numDevis2 int
as
begin
-- La table temporaire pour stocker les colonnes différentes
create table #tab(nomColonne varchat(50))

-- On parcours toutes les colonnes de la table
declare curseur cursor for
select	c.[name] as [nomColonne]
from	[sysobjects] o inner join 
	[syscolumns] c on o.[id] = c.[id]
where  o.[name] = 'Devis'
open curseur -- On ouvre le curseur
fetch curseur into @nomColonne -- On lit la 1er colonne
while @@FETCH_STATUS = 0 begin
     if @nomColonne != 'numDevis' begin
          if (select @nomColonne from Devis where numDevis=@numDevis1) not like (select @nomColonne from Devis where numDevis=@numDevis2)) begin
               -- Les deux entrée de la table devis ne sont pas identique
               insert into #tab(nomColonne) values(@nomColonne)
          end
     end -- Fin @nomColonne != 'numDevis'
     -- On passe à la colonne suivante
     fetch curseur into @nomColonne
end -- Fin while

close curseur
deallocate curseur

-- On affiche la liste des colonnes
select * from #tab
drop table #tab

end --Fin de la procedure
Merci de votre aide