Bonjour a tous,
J'essaie de modifier une requête sql écrite pour une bdd MySQL, en une requête pour bdd DB2.

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
 "CREATE PROCEDURE NX_ACCESS_ALLOWED2 " 
				+ " (IN NID VARCHAR(4000), IN USERS VARCHAR(4000), IN PERMS VARCHAR(4000), OUT GR INTEGER) "
				+ "  READS SQL DATA "
				+ "  BEGIN "
				+ "   DECLARE ALLUSERS VARCHAR(4000); " 
				+ "   DECLARE ALLPERMS VARCHAR(4000); "  
				+ "   DECLARE FIRST INTEGER; " 
				+ "   DECLARE CURID VARCHAR(4000); " 
				+ "   DECLARE NEWID VARCHAR(4000); " 
				+ "   DECLARE PE VARCHAR(4000); " 
				+ "   DECLARE US VARCHAR(4000);  " 
				+ "   DECLARE v_sqlstatus INTEGER DEFAULT 0; " 
				+ "     SET ALLUSERS = '%' || USERS || '%'; " 
				+ "     SET ALLPERMS = '%' || PERMS || '%'; " 
				+ "     SET FIRST = 1; " 
				+ "     SET CURID = NID; " 
				+ "     WHILE CURID IS NOT NULL DO  " 
				+ "      BEGIN " 
				+ "      DECLARE CC CURSOR FOR SELECT PERMISSION, GRANT, USER " 
				+ "      FROM ACLS WHERE ACLS.ID = CURID ORDER BY POS; " 
				+ "      DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_sqlstatus = -1; " 
				+ "       OPEN CC; " 		
				+ "         FETCH FROM CC INTO GR, PE, US; " 
				+ "          WHILE 0 = v_sqlstatus DO	 "
				+ " 	  			IF ALLUSERS LIKE ('%' || US || '%') AND ALLPERMS LIKE ('%' || PE || '%') THEN	 " 			
				+ "       			SET GR = 1;	 " 
				+ "       			GOTO EXIT; "
//				+ "           	FETCH FROM CC INTO GR, PE, US; " 
				+ "     			END IF; " 
				+ "     		 END WHILE; " 
				+ "      CLOSE CC; "          
				+ "   		END; " 
				+ "     SET NEWID = (SELECT PARENTID FROM HIERARCHY WHERE HIERARCHY.ID = CURID); " 
				+ "      IF FIRST = 1 AND NEWID IS NULL THEN " 
				+ "      	 SET NEWID = (SELECT VERSIONABLEID FROM VERSIONS WHERE VERSIONS.ID = CURID); " 
				+ "      	 SET FIRST = 0; " 
				+ "      	 SET CURID = NEWID; " 
				+ "      END IF; " 
				+ "  END WHILE; " 
				+ "       SET GR = 0; " 
				+ "       EXIT: SET GR = 1; "
				+ " END "));
Et en fait, j'ai pas d'erreur apparante, mais une boucle infiinie apparement.
Je ne voit pas d'ou cela peut venir ?
Merci d'avance