Учитывая число, как я могу прокручивать набор чисел на основе этого числа внутри функции MySql?MySql с использованием цикла while внутри функции
Чтобы получить более четкое изображение, см. Мой вопрос, где я спросил, как что-то подобное можно сделать в php. Question here.
Я буду делать select myfunction(thenumber)
. Основываясь на этом количестве, я получил петлю.
В настоящее время,
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
Вот функция я возился с.
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
Как я могу сделать внутри функции MySql, что я сделал php. В php мы храним вещи в массиве. Как мы можем это сделать здесь?
Редактировать
Результат
То, что я пытаюсь получить в конце ссылки.
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>`
функции Mysql возвращают только скалярное значение. Поэтому вы не можете сделать то, что вы сделали в php. Объясните более четко, что вы ожидаете получить от своей функции? Если вы передадите 1 в качестве аргумента, вы просто ожидаете возвращения строки «1, 4, 7»? – peterm
Нет. Я хочу, чтобы цикл while перемещался по номерам 1, 4, 7. Результат такой ссылки (пример для 1): '' – Norman
Вы хотите, чтобы эти ссылки были как одно значение varchar, или вы ожидаете, что они будут быть рядами? – peterm