Étant donné un nombre, comment puis-je faire défiler un ensemble de nombres en fonction de ce nombre, dans une fonction MySql?MySql utilisant une boucle while dans une fonction
Pour obtenir une image plus claire, SVP voir ma question où j'ai demandé comment quelque chose comme ceci pourrait être fait en php. Question here.
Je vais faire select myfunction(thenumber)
. Basé sur ce nombre, je dois boucler.
A partir de maintenant,
If thenumber = 1 then loop backward thru 1,4,7 only
If thenumber = 2 then loop thru 3
If thenumber = 3 then loop thru 10
est ici la fonction que j'ai tripotent.
CREATE DEFINER=`root`@`localhost` FUNCTION `whileloop`(`danum` VARCHAR(2050))
RETURNS varchar(1500)
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE x INT;
DECLARE str VARCHAR(255);
SET x = danum;
SET str = '';
#If x = 1, while = 1, 4, 7////////
WHILE x >= 1 DO //I'm stuck here
SET str = CONCAT(str,x,',');
SET x = x - 1;
END WHILE;
RETURN str;
END
Comment puis-je faire dans une fonction MySQL, ce que j'ai fait php. En PHP, nous avons stocké des choses dans un tableau. Comment pouvons-nous faire cela ici?
Modifier
Résultat
Ce que je suis en train de sortir à la fin sont des liens.
So if `thenumber = 1`
`<a href=foo.php?id=1> <a href=foo.php?id=4> <a href=foo.php?id=7>` //3 Links Output in a single row
If `thenumber = 2`
`<a href=foo.php?id=3>` //Same as above. Output in a single row.
If `thenumber = 10`
`<a href=foo.php?id=10>`
fonctions Mysql ne retournent une valeur scalaire. Par conséquent, vous ne pouvez pas faire exactement ce que vous avez fait en php. Expliquer plus clairement ce que vous attendez de votre fonction? Si vous passez 1 en argument, attendez-vous simplement qu'une chaîne '1, 4, 7' soit renvoyée? – peterm
Non. Je veux que la boucle while fasse une boucle sur les numéros 1, 4, 7. Le résultat est un lien comme celui-ci (exemple pour 1): '' – Norman
Vous voulez ces liens comme valeur varchar ou vous les attendez être des rangées? – peterm