Ir para conteúdo
Fórum Script Brasil

ak32

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Sobre ak32

ak32's Achievements

0

Reputação

  1. Nossa, era bem simples mesmo a solução, mas que nem passou pela minha cabeça. hahaha, Muito obrigado cara! :D
  2. Olá galera, sou novo aqui no forum, muito prazer! Tenho duas dúvidas a respeito de funções A primeira é a seguinte: Criei uma função que me retorna as categorias filhas de determinada categoria passada por parâmetro. Ou seja, ao passar o id de determinada categoria, todas as possíveis categorias filhas abaixo dela são retornadas. Como é um auto-relacionamento, é uma chamada recursiva as categorias. Por exemplo: - A categoria 5 tem como filha a 6 - A categoria 6 tem como filha a 7 e 8 - A categoria 8 tem como filha a 9 Se eu executar a função retorna_todas_filhas(5) ele retornará: 6, 7, 8, 9 CREATE OR REPLACE FUNCTION retorna_todas_filhas(integer) RETURNS SETOF resultado AS DECLARE var_cat ALIAS FOR $1; BEGIN RETURN QUERY WITH cat_filhas AS ( SELECT idsubcategoria AS filhas FROM tabsubcategoria WHERE idcategoria = var_cat ) , cat_maes AS ( SELECT idsubcategoria AS filhas_filhas FROM tabsubcategoria WHERE idcategoria IN (SELECT filhas FROM cat_filhas) ) , resultado AS ( SELECT filhas FROM cat_filhas UNION SELECT filhas_filhas FROM cat_maes ) SELECT filhas FROM resultado; RETURN; Executando, ele me retorna exatamente o seguinte retorna_todas_filhas (6) (7) (8) (9) Acima, ele retorna os números entre parenteses, isso é normal? A segunda dúvida é a respeito desta mesma função usada dentro de outra função. Preciso usar esta função para fazer a função de busca dentro das categorias que ela me retorna Ou mesmo, usa-la em um select exemplo: SELECT nome_produto FROM produto WHERE categoria IN (SELECT retorna_todas_filhas(5)); Mas ele não permite que eu execute isso. Alguém sabe me dizer uma solução para este problema? Obrigado!!!
×
×
  • Criar Novo...