Procedure em sql

Preciso montar uma procedure recursiva.
Quero ver se alguem tem como me ajudar,
Estava pensando em fazer uma procedure parecida com essa, mais não sei o que esta errado, e como fazer este while corretamente?

procedure teste (codigo int) begin while (select * from tabela where cd_codigo = codigo) teste(cd_codigo); end $$