IF, dans la requete, dans une procédure stockée
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 :
Code:
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 |
J'ai essayé de faire de plusieurs manières avec un BEGIN - END, etc, mais çà ne change rien.
D'ailleurs on ne peut pas appliquer ce principe de IF pour ne pas re-écrire toute la requete, comme par exemple :
Code:
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;
; |
Merci et bonne journée.
F.