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 :merci
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.
++floanne.
Partager