Bonjour,
J'aimerai savoir comment faire pour faire un IF dans une procédure stockée. Cela me parait en même temps facile, et pourtant j'ai une erreur :
J'ai essayé de faire de plusieurs manières avec un BEGIN - END, etc, mais çà ne change rien.
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 If param_id_category = 0 THEN SELECT `CATEGORY`.`CAT_NAME`, `PORTFOLIO_LANG`.`PORT_TITLE`, `PORTFOLIO_LANG`.`PORT_ID` FROM `PORTFOLIO` p INNER JOIN `PORTFOLIO_LANG` ON (`p`.`PORT_ID` = `PORTFOLIO_LANG`.`PORT_ID`) INNER JOIN `CATEGORY` ON (`p`.`PORT_CATEGORY_ID` = `CATEGORY`.`CAT_ID`) WHERE `CATEGORY`.`CAT_ID` = 1 IF param_limit > 0 THEN LIMIT 0,param_limit END IF; ; ELSE SELECT `CATEGORY`.`CAT_NAME`, `PORTFOLIO_LANG`.`PORT_TITLE`, `PORTFOLIO_LANG`.`PORT_ID` FROM `PORTFOLIO` p INNER JOIN `PORTFOLIO_LANG` ON (`p`.`PORT_ID` = `PORTFOLIO_LANG`.`PORT_ID`) INNER JOIN `CATEGORY` ON (`p`.`PORT_CATEGORY_ID` = `CATEGORY`.`CAT_ID`) IF param_limit > 0 THEN LIMIT 0,param_limit END IF; ; END IF
D'ailleurs on ne peut pas appliquer ce principe de IF pour ne pas re-écrire toute la requete, comme par exemple :Merci et bonne journée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 SELECT `CATEGORY`.`CAT_NAME`, `PORTFOLIO_LANG`.`PORT_TITLE`, `PORTFOLIO_LANG`.`PORT_ID` FROM `PORTFOLIO` p INNER JOIN `PORTFOLIO_LANG` ON (`p`.`PORT_ID` = `PORTFOLIO_LANG`.`PORT_ID`) INNER JOIN `CATEGORY` ON (`p`.`PORT_CATEGORY_ID` = `CATEGORY`.`CAT_ID`) IF param_id_category = 0 THEN WHERE `CATEGORY`.`CAT_ID` = 1 END IF; ;
F.
Partager