Dúvida para relatório SQL
Boa tarde!
Possuo a seguinte estrutura de tabela:
nivel / codigopai / codigofilho:
1 casa sala
1 casa cozinha
1 casa patio
2 sala mesa
2 sala rack
2 cozinha microondas
2 cozinha geladeira
3 mesa marrom
3 rack amarelo
3 microondas prata
3 geladeira branca
1 garagem carro
1 garagem bancada
2 celta 4 portas
2 ferramentas metal
porém, as vezes terei uma estrutura dentro de outra, como por ex:
nivel / codigopai / codigofilho:
1 casa cozinha
2 cozinha microondas
3 microondas prata
2 sala mesa
2 sala rack
1 garagem carro
2 celta 4 portas
1 garagem bancada
2 ferramentas metal
e por aí vai.
Não estou conseguindo fazer essa estruturação, por níveis e quebras, alguém para ajudar? A idéia é montar algo nesse estilo no relatório, como exemplo:
1 pai filho
2 pai filho
2 pai filho
3 pai filho
3 pai filho
2 pai filho
1 pai filho
2 pai filho
3 pai filho
3 pai filho
4 pai filho
3 pai filho
2 pai filho
1 pai filho
1 pai filho
desculpa por me estender demais, parece uma pergunta com uma resposta simples mas estou apanhando sozinho. Agradeço.
Possuo a seguinte estrutura de tabela:
nivel / codigopai / codigofilho:
1 casa sala
1 casa cozinha
1 casa patio
2 sala mesa
2 sala rack
2 cozinha microondas
2 cozinha geladeira
3 mesa marrom
3 rack amarelo
3 microondas prata
3 geladeira branca
1 garagem carro
1 garagem bancada
2 celta 4 portas
2 ferramentas metal
porém, as vezes terei uma estrutura dentro de outra, como por ex:
nivel / codigopai / codigofilho:
1 casa cozinha
2 cozinha microondas
3 microondas prata
2 sala mesa
2 sala rack
1 garagem carro
2 celta 4 portas
1 garagem bancada
2 ferramentas metal
e por aí vai.
Não estou conseguindo fazer essa estruturação, por níveis e quebras, alguém para ajudar? A idéia é montar algo nesse estilo no relatório, como exemplo:
1 pai filho
2 pai filho
2 pai filho
3 pai filho
3 pai filho
2 pai filho
1 pai filho
2 pai filho
3 pai filho
3 pai filho
4 pai filho
3 pai filho
2 pai filho
1 pai filho
1 pai filho
desculpa por me estender demais, parece uma pergunta com uma resposta simples mas estou apanhando sozinho. Agradeço.
Mauricio Espido
Curtidas 0
Melhor post
Emerson Nascimento
15/10/2019
cara, nunca trabalhei com Oracle (sequer o tenho instalado), mas pesquisando na internet criei a stored procedure abaixo.
Com certeza há erros de sintaxe, mas acho que serve como ponto de partida.
Com certeza há erros de sintaxe, mas acho que serve como ponto de partida.
create or replace procedure EstrutProduto(vNivel in int, vCodPai in varchar(15)) as --Declarando as variáveis que serão manipuladas vCodFilho varchar(15); --Criando o cursor que fará um select na tabela de estruturas... cursor cEstrut is SELECT CODIGOPAI, CODIGOFILHO FROM TBESTRUTURA WHERE COALESCE(CODIGOPAI,'') = COALESCE(:vCodPai,'') ORDER BY NIVEL; begin vNivel := Coalesce(vNivel,1); --Abrindo o cursor open cEstrut; --Instrução de início do loop loop --Atribuindo o retorno da consulta, às variáveis fetch cEstrut into vNivel, vCodPai, vCodFilho; --Incluindo uma condição para saída do loop exit when cEstrut%notfound; if (vNivel = 1) then ILevel := '' else ILevel := lpad(' ', 15 * (vNivel-1), ' ') endi if; ILevel := ILevel || vCodPai || ' ' || vCodFilho; --Imprime o resultado na tela dbms_output.put_line(ILevel); --Chama a própria stored procedure, de forma recursiva EstrutProduto(vNivel+1, vCodFilho); --Instrução para finalizar o loop end loop; --Fechando o cursor para disponibilizar os recursos que estavam sendo utilizados close cEstrut; end
GOSTEI 1
Mais Respostas
Mauricio Espido
10/10/2019
esqueci que o site ignora espaços, então segue o último trecho novamente:
Boa tarde!
Possuo a seguinte estrutura de tabela:
nivel / codigopai / codigofilho:
1 casa sala
1 casa cozinha
1 casa patio
2 sala mesa
2 sala rack
2 cozinha microondas
2 cozinha geladeira
3 mesa marrom
3 rack amarelo
3 microondas prata
3 geladeira branca
1 garagem carro
1 garagem bancada
2 celta 4 portas
2 ferramentas metal
porém, as vezes terei uma estrutura dentro de outra, como por ex:
nivel / codigopai / codigofilho:
1 casa cozinha
2 cozinha microondas
3 microondas prata
2 sala mesa
2 sala rack
1 garagem carro
2 celta 4 portas
1 garagem bancada
2 ferramentas metal
e por aí vai.
Não estou conseguindo fazer essa estruturação, por níveis e quebras, alguém para ajudar? A idéia é montar algo nesse estilo no relatório, como exemplo:
1 pai filho
-----2 pai filho
-----2 pai filho
----------3 pai filho
----------3 pai filho
-----2 pai filho
1 pai filho
-----2 pai filho
----------3 pai filho
----------3 pai filho
---------------4 pai filho
----------3 pai filho
-----2 pai filho
1 pai filho
1 pai filho
Boa tarde!
Possuo a seguinte estrutura de tabela:
nivel / codigopai / codigofilho:
1 casa sala
1 casa cozinha
1 casa patio
2 sala mesa
2 sala rack
2 cozinha microondas
2 cozinha geladeira
3 mesa marrom
3 rack amarelo
3 microondas prata
3 geladeira branca
1 garagem carro
1 garagem bancada
2 celta 4 portas
2 ferramentas metal
porém, as vezes terei uma estrutura dentro de outra, como por ex:
nivel / codigopai / codigofilho:
1 casa cozinha
2 cozinha microondas
3 microondas prata
2 sala mesa
2 sala rack
1 garagem carro
2 celta 4 portas
1 garagem bancada
2 ferramentas metal
e por aí vai.
Não estou conseguindo fazer essa estruturação, por níveis e quebras, alguém para ajudar? A idéia é montar algo nesse estilo no relatório, como exemplo:
1 pai filho
-----2 pai filho
-----2 pai filho
----------3 pai filho
----------3 pai filho
-----2 pai filho
1 pai filho
-----2 pai filho
----------3 pai filho
----------3 pai filho
---------------4 pai filho
----------3 pai filho
-----2 pai filho
1 pai filho
1 pai filho
GOSTEI 0
Mauricio Espido
10/10/2019
desculpa a poluição visual, não consigo editar a postagem...
GOSTEI 0
Emerson Nascimento
10/10/2019
você pode criar stored procedures? pode ser para um banco de dados específico?
o resultado será em texto?
o resultado será em texto?
GOSTEI 0
Mauricio Espido
10/10/2019
você pode criar stored procedures? pode ser para um banco de dados específico?
o resultado será em texto?
o resultado será em texto?
sim, pode ser um stored, seria em oracle, porém não tenho idéia de como montar e trazer o retorno depois.
GOSTEI 0
Mauricio Espido
10/10/2019
Ótimo, vou verificar e testar os comandos aqui, qualquer coisa eu retorno o post. Desde já muito obrigado pelos retornos, valeu!!!
GOSTEI 0