Bonjour
Dans une procédure stockée, comment faire pour interpréter une variable de type Varchar comme un nom de colonne???
Exemple :
Ce code retourne la chaine 'id' alors que je voudrais qu'il me retourne 0
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
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 :
Merci de votre aide
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
Partager