Problèmes sur ORDER et de constituer un groupe de liste
Problèmes sur ORDER et de constituer un groupe de liste - SQL/NoSQL - Programmation
MarshPosté le 06-09-2004 à 11:36:39
Bonjour
J'ai un problème de constitution de groupe par liste.
FUNCTION test_ronde ( nummatchs in number )RETURN integer IS
-- Utilisation d'un curseur avec un accès fetch qui va lire les enregistrements. cursor inscmatchs is
select * from ( select num_appariement,num_licence, rownum rang from ( select num_appariement,num_licence, rownum ordre FROM inscrire ORDER by 1) WHERE ordre <= (SELECT COUNT(*)/2 FROM inscrire)) a, ( select num_appariement,num_licence,rownum rang from ( select num_appariement,num_licence, rownum ordre FROM inscrire ORDER BY 1) WHERE ordre > (SELECT COUNT(*)/2 FROM inscrire)) b where a.rang=b.rang; rec inscmatchs %rowtype; nbreronde integer; begin nbreronde := 1; open inscmatchs; loop fetch inscmatchs into rec; exit when inscmatchs %NOTFOUND;
/* Mise à jour de l'appariement dans le fichier Inscrire qui était à NULL au départ, avec incrémentation de l'appariement par rapport au classement ELO du joueur.*/
UPDATE dpjouer set num_ronde = nbreronde where num_licence = rec.num_licence and num_matchs = nummatchs; nbreronde := nbreronde; -- end loop; close inscmatchs; commit; end;
Sous SQL cela fonctionne mais sous PL/SQL ce programme me met comme erreur ceci, :
Symbole "ORDER" recontré à la place des symboles suivants : .),@ with <an indentifer> Symbole "group inseré avant "ORDER" pour continuer
Ce programme effectue déjà la division d'une liste. Maintenant je dois faire la division de la précédente liste à partir du même principe de ce programme.
Marsh Posté le 06-09-2004 à 11:36:39
Bonjour
J'ai un problème de constitution de groupe par liste.
FUNCTION test_ronde ( nummatchs in number )RETURN integer IS
-- Utilisation d'un curseur avec un accès fetch qui va lire les enregistrements.
cursor inscmatchs is
select *
from ( select num_appariement,num_licence, rownum rang
from ( select num_appariement,num_licence, rownum ordre
FROM inscrire
ORDER by 1)
WHERE ordre <= (SELECT COUNT(*)/2 FROM inscrire)) a,
( select num_appariement,num_licence,rownum rang
from ( select num_appariement,num_licence, rownum ordre
FROM inscrire
ORDER BY 1)
WHERE ordre > (SELECT COUNT(*)/2 FROM inscrire)) b
where a.rang=b.rang;
rec inscmatchs %rowtype;
nbreronde integer;
begin
nbreronde := 1;
open inscmatchs;
loop
fetch inscmatchs into rec;
exit when inscmatchs %NOTFOUND;
/* Mise à jour de l'appariement dans le fichier Inscrire
qui était à NULL au départ, avec incrémentation de l'appariement
par rapport au classement ELO du joueur.*/
UPDATE dpjouer set num_ronde = nbreronde
where num_licence = rec.num_licence and num_matchs = nummatchs;
nbreronde := nbreronde;
--
end loop;
close inscmatchs;
commit;
end;
Sous SQL cela fonctionne mais sous PL/SQL ce programme me met comme erreur ceci, :
Symbole "ORDER" recontré à la place des symboles suivants :
.),@ with <an indentifer>
Symbole "group inseré avant "ORDER" pour continuer
Ce programme effectue déjà la division d'une liste. Maintenant je dois faire la division de la précédente liste à partir du même principe de ce programme.
Merci de votre réponse
Yesno