A unica forma de recuperar valores de uma tabela em mysql é fazendo uma consulta(Select) mas o que você fará com o resultado ai é com você.
E sim é possível fazer select em procedure e function. Mas para varrer um resultado de um select você precisa declarar um cursor que recebe o resultado o select, depois disso voce intera o cursor.
Veja o exemplo:
DELIMITER $
CREATE PROCEDURE arredondamento_nota()
BEGIN
O DECLARE serve para declarar uma variável que será utilizada durante o programa
DECLARE nota_atual NUMERIC(15,2);
DECLARE id_aluno, id_prova INT;
Criamos um CURSOR que irá “guardar” o resultado do SELECT
DECLARE cur CURSOR FOR SELECT valor_nota, aluno_id, prova_id FROM nota;
Abrimos o CURSOR para utilizá-lo dentro do LOOP
OPEN cur;
Inicamos o LOOP dando um nome ao mesmo para que este possa ser referenciado caso #necessário
myloop:
LOOP
Atribuímos o valor das colunas do cursor as variáveis que criamos anteriormente
FETCH cur INTO nota_atual, id_aluno, id_prova;
Lógica principal da nossa rotina.
Caso o próximo inteiro tenha um diferença de 0.2 ou menos da nota atual
então a nota atual será arredondada para este inteiro.
IF (CEIL(nota_atual) - nota_atual) <= 0.2 THEN
UPDATE nota SET valor_nota = CEIL(nota_atual) WHERE aluno_id = id_aluno AND prova_id = id_prova;
END IF;
END LOOP;
Fechamos o cursor
CLOSE cur;
END
array10
Fonte: https://www.devmedia.com.br/stored-procedures-e-functions-no-mysql-com-phpmyadmin/30837