Bonjour,
Je dois mettre à jour des tables, j'ai utilisé des curseurs pour le faire voici le 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
37
38
39
40
41
42
43
44
45
46
47
 
DECLARE @tables_a_traiter CHAR(10)
DECLARE @champ_a_traiter VARCHAR(50)
DECLARE @chaine_a_chercher VARCHAR(10)
DECLARE @chaine_de_remplacement VARCHAR(10)
DECLARE @requete varchar(200)
 
DECLARE Cursor_tables_a_traiter CURSOR  
FOR SELECT Table_,Champ
FROM travail..Accent_champ$
OPEN Cursor_tables_a_traiter
FETCH NEXT FROM Cursor_tables_a_traiter 
	INTO @tables_a_traiter, @champ_a_traiter
 
WHILE(@@FETCH_STATUS = 0)
BEGIN
 
	DECLARE Cursor_Caracteres_a_traiter CURSOR  
	FOR SELECT OldCarac,NewCarac
	FROM travail..Accent_caractere$
	OPEN Cursor_Caracteres_a_traiter
	FETCH NEXT FROM Cursor_Caracteres_a_traiter 
		INTO @chaine_a_chercher, @chaine_de_remplacement
	WHILE(@@FETCH_STATUS = 0)
	BEGIN
		set @requete =''
		set @requete = 'UPDATE SELL.SYSADM.' + @tables_a_traiter
		set @requete = @requete + ' SET ' + @champ_a_traiter + ' = REPLACE(' 
		+ @champ_a_traiter + ',''' 
		+ @chaine_a_chercher + ''''+ ',''' 
		+ @chaine_de_remplacement + '''' + ')'	
		print @requete
		exec @requete
 
 
	FETCH NEXT FROM Cursor_Caracteres_a_traiter 
		INTO @chaine_a_chercher, @chaine_de_remplacement 
	END
	CLOSE Cursor_Caracteres_a_traiter
	DEALLOCATE Cursor_Caracteres_a_traiter 
FETCH NEXT FROM Cursor_tables_a_traiter 
	INTO @tables_a_traiter, @champ_a_traiter
END
 
 
CLOSE Cursor_tables_a_traiter
DEALLOCATE Cursor_tables_a_traiter
et voici le résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
UPDATE SELL.SYSADM.hi0        SET titulaire = REPLACE(titulaire,'Þ','è')
Serveur*: Msg 911, Niveau 16, État 1, Ligne 32
Impossible de trouver l'entrée dans sysdatabases pour la base de données  'UPDATE SELL'. Aucune entrée ne porte ce nom. Assurez-vous que le nom est correctement saisi.
Le problème est que quand j'exécute ma requete générée, je n'ai aucun problème. Ai-je faux quelque part ?