bonjour,

j'ai un traitement à faire sur un grand nombre de requete dans des .pc...

Pour cela j'ai fait un scripte qui m'identifi les requetes SQL contenant des variables commancant pas :db_ suivies par une autre cammancant par :ind_... et j m'arrete au ";" de la commande SQL.

Mon expression régulière marche bien pour la première requete mais ensuite j'ai une boucle infinie.

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
	# on recopie les parties du programme que l'on ne modifie pas
	# et on traite la requete ensuite...
	while (	$txt =~ /((?:.*))(EXEC SQL(?:[^;]*):db_(?:[^;]*):ind_(?:[^;]*);)/gsmi ||
		$txt =~ /(.+)/gsmi)
	{
		$res = $res.$1 ;
		$tmp = $2 ;
		if ($tmp)
		{
			print ("\n\t¤¤¤ requete ¤¤¤ = \n\n$tmp\n\n") ;
 
			if (($tmp =~ /(FETCH.*INTO)/) || ($tmp =~ /(SELECT.*INTO)/))
			{
				$res = $res."\n".&traiterIndicateur ($tmp, @pointH) ;
			}
			else
			{
				$res = $res."\n".&initIndicateur ($tmp, @pointH) ;
			}
		}
		print "FIN DU WHILE\n"
	}

sortie :
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
        ¤¤¤ requete ¤¤¤ =
 
EXEC SQL FOR :Db_UpdatedItemsCount:ind_UpdatedItemsCount UPDATE TYP_INFO
        SET     ADBS_REF = NULL
        WHERE   ROWID = :Db_T_Rowid:ind_T_Rowid;
 
FIN DU WHILE
FIN DU WHILE
FIN DU WHILE
FIN DU WHILE
FIN DU WHILE
FIN DU WHILE
FIN DU WHILE
FIN DU WHILE
FIN DU WHILE
FIN DU WHILE
FIN DU WHILE
FIN DU WHILE
etc.
merci
++floanne.