Erreurs avec mon curseur
almaje
Messages postés
14
Date d'inscription
Statut
Membre
Dernière intervention
-
Reivax962 Messages postés 3672 Date d'inscription Statut Membre Dernière intervention -
Reivax962 Messages postés 3672 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai une table qui contient des enregistrements que je souhaite récupérer et insérer dans une 2e table selon une colonne "Index_count" de la premiere table, quand j'exécute mon code ça me donne des erreurs sur lesquelles je seche pour le moment :
et voici les erreurs :
Msg 156, Level 15, State 1, Line 15
Incorrect syntax near the keyword 'select'.
Msg 156, Level 15, State 1, Line 15
Incorrect syntax near the keyword 'select'.
Msg 156, Level 15, State 1, Line 15
Incorrect syntax near the keyword 'select'.
Msg 102, Level 15, State 1, Line 15
Incorrect syntax near ')'.
Msg 102, Level 15, State 1, Line 29
Incorrect syntax near '@code2'.
J'ai une table qui contient des enregistrements que je souhaite récupérer et insérer dans une 2e table selon une colonne "Index_count" de la premiere table, quand j'exécute mon code ça me donne des erreurs sur lesquelles je seche pour le moment :
Declare @code1 varchar(10),@code2 varchar(10), @lettre2 varchar(5), @lettre3 varchar(5), @lettre4 varchar(5); SET @code2 = NULL; SET @lettre2 = NULL; SET @lettre3 = NULL; SET @lettre4 = NULL; DECLARE curseur1 CURSOR FOR SELECT top 1 Code from Configuration..ngap order by 'Code'; OPEN curseur1 Fetch next from curseur1 INTO @code1; while @@FETCH_STATUS = 0 BEGIN if @code1<>@code2 insert into Configuration..ngap2 values ('@code1', select top 1 Description_acte from Configuration..ngap where Code='@code1' order by 'Code', select top 1 Lettre from Configuration..ngap where Code='@code1' order by 'Code', select top 1 Coef from Configuration..ngap where Code='@code1' order by 'Code') if @code1=@code2 set @lettre2 = (select lettre2 from Configuration..ngap2 where Code='@code1'); set @lettre3 = (select lettre3 from Configuration..ngap2 where Code='@code1'); set @lettre4 = (select lettre4 from Configuration..ngap2 where Code='@code1'); if @lettre2 is null update Configuration..ngap2 set lettre2 = (select Lettre from Configuration..ngap where Code='@code1' and index_count=2) update Configuration..ngap2 set Coef2 = (select Coef from Configuration..ngap where Code='@code1' and index_count=2) if @lettre3 is null update Configuration..ngap2 set lettre3 = (select Lettre from Configuration..ngap where Code='@code1' and index_count=3) update Configuration..ngap2 set Coef3 = (select Coef from Configuration..ngap where Code='@code1' and index_count=3) if @lettre4 is null update Configuration..ngap2 set lettre4 = (select Lettre from Configuration..ngap where Code='@code1' and index_count=4) update Configuration..ngap2 set Coef4 = (select Coef from Configuration..ngap where Code='@code1'and index_count=4) @code2=@code1; FETCH NEXT FROM curseur1 into @code1; END CLOSE curseur1; DEALLOCATE curseur1; GO
et voici les erreurs :
Msg 156, Level 15, State 1, Line 15
Incorrect syntax near the keyword 'select'.
Msg 156, Level 15, State 1, Line 15
Incorrect syntax near the keyword 'select'.
Msg 156, Level 15, State 1, Line 15
Incorrect syntax near the keyword 'select'.
Msg 102, Level 15, State 1, Line 15
Incorrect syntax near ')'.
Msg 102, Level 15, State 1, Line 29
Incorrect syntax near '@code2'.
A voir également:
- Erreurs avec mon curseur
- Comment faire apparaître le curseur sans souris - Guide
- Comment activer le curseur de mon pc - Guide
- Curseur en arabe - Forum Windows
- Curseur souris disparu pc portable acer ✓ - Forum souris / Touchpad
- Curseur wii ne s'affiche pas ✓ - Forum Wii
2 réponses
Dans la requête INSERT, j'ai des des guillemets dans les valeurs à insérer et je n'ai plus que 2 erreurs :
Msg 102, Level 15, State 1, Line 15
Incorrect syntax near '@code1'.
Msg 102, Level 15, State 1, Line 29
Incorrect syntax near '@code2'.
Msg 102, Level 15, State 1, Line 15
Incorrect syntax near '@code1'.
Msg 102, Level 15, State 1, Line 29
Incorrect syntax near '@code2'.
Bonjour,
Je vois quelques soucis dans ton code.
1 - Tu devrais délimiter l'intérieur de tes blocs IF par des BEGIN...END. Tel que c'est écrit, le IF ne concerne à chaque fois que la première requête qui suit, et j'ai l'impression que ce n'est pas ce que tu recherches.
2 - @code2=@code1; -> Il manque un SET, comme ceci :
SET @code2=@code1;
3 - Dans ta requête d'initialisation du curseur, tu mets un TOP 1. Du coup ton curseur n'ira jamais voir plus loin que la première ligne ! Il faut l'enlever.
4 - Dans tous tes ORDER BY 'Code', 'Code' écrit comme ça représente une chaîne de caractère et non la colonne. Pour indiquer un nom de colonne, soit tu le laisses sans apostrophes
ORDER BY Code
soit entre crochets (notation propre à SQL Server)
ORDER BY [Code]
Je pense qu'avec toutes ces corrections, ça commencera à rouler :)
Xavier
Je vois quelques soucis dans ton code.
1 - Tu devrais délimiter l'intérieur de tes blocs IF par des BEGIN...END. Tel que c'est écrit, le IF ne concerne à chaque fois que la première requête qui suit, et j'ai l'impression que ce n'est pas ce que tu recherches.
2 - @code2=@code1; -> Il manque un SET, comme ceci :
SET @code2=@code1;
3 - Dans ta requête d'initialisation du curseur, tu mets un TOP 1. Du coup ton curseur n'ira jamais voir plus loin que la première ligne ! Il faut l'enlever.
4 - Dans tous tes ORDER BY 'Code', 'Code' écrit comme ça représente une chaîne de caractère et non la colonne. Pour indiquer un nom de colonne, soit tu le laisses sans apostrophes
ORDER BY Code
soit entre crochets (notation propre à SQL Server)
ORDER BY [Code]
Je pense qu'avec toutes ces corrections, ça commencera à rouler :)
Xavier