[pgbr-geral] RESULT TABLE DINAMICAMENTE
Ola boa tarde a todos. Eu venho criando algumas pls pra resultar uma TABLE, na definicao da funcao ja se determina a estrutura da table que vai resultar. exemplo: CREATE OR REPLACE FUNCTION public.lucratividade_detalhada (Pd1 Date, Pd2 Date) RETURNS TABLE ( ID_OS integer, DATA DATE, ID_CLIENTE integer, NOME VARCHAR(100), ID_PRODUTO INTEGER, CODFOR VARCHAR(100), CODBAR VARCHAR(100), DESCRICAO VARCHAR(100), UNIDADE VARCHAR(2), QTDE NUMERIC(10,3), CUSTO NUMERIC(10,2), DESCONTO NUMERIC(10,2), UNITARIO NUMERIC(10,2), TOTAL_LIQUIDO NUMERIC(10,2), TOTAL_BRUTO NUMERIC(10,2), TOTAL_CUSTO NUMERIC(10,2), LUCRO NUMERIC(10,2), MARCKUP NUMERIC(10,2), ML NUMERIC(10,2) ) AS $body$ () AI NO RETURN DEVO CRIA-LO PRA RETORNAR EXATAMENTE A ESTRUTURA QUE ESTA DETALHADO NA TABLE: return query SELECT * from tmplucratividade; Neste ex. a tabela tmplucratividade tem exatamente a mesma estrutura da TABLE. Porem queria saber se existe uma maneira de eu retornar uma QUERY DINAMICAMENTE exemplo: RETURN QUERY Select Nome, Endereco From CLIENTE Order by Nome; GRATO. LUCIANO [image: Foto] *LuMoraes* *O mais completo para seu comércio.* ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Omitir Conext em raise exception
On 15-02-2016 17:33, Carlos Antônio Pereira (VidaUTI) wrote: > O problema é que, ao lançar a exception, o script insert vai todo no > CONTEXT, deixando a mensagem muito grande e suja. > > O código vai todo na parte CONTEXT da mensagem. E esse código que eu > quero desabilitar. > > Coloquei log_error_verbosity (postgresql.conf) = terse. Não funcionou. > Mas desabilitar esta opção em nível global (no postgresql.conf) pode > não ser interessante, certo? > >O CONTEXT você está vendo no cliente ou no servidor? Se for no cliente, >alguns aplicativos como o psql suportam definir isso (variável VERBOSITY >[1]) e outros não. A libpq suporta tal funcionalidade através da função >PQsetErrorVerbosity, e cabe ao aplicativo cliente chamar essa função >para definir o que vai ser retornado. >Além disso, log_error_verbosity altera somente o que é escrito no log do >servidor. Obrigado, Euler. Seria apenas no cliente. Vou pesquisar sobre suas dicas. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Consulta Cross-Tab
Em 19 de fevereiro de 2016 09:14, André Ormenese escreveu: > > > > >> 2016-02-18 17:32 GMT-02:00 André Ormenese : >> >>> Boa tarde pessoal. >>> >>> Vou dar um exemplo de consulta em cross-tab que gostaria de fazer, e >>> vejam se é possível. >>> >>> Tenho duas tabelas, uma com código e descrição de produtos do sangue, e >>> outra que armazena os dados de resultados de bolsas de sangue fracionada. >>> >>> Uma bolsa fracionada pode gerar um ou mais produtos. >>> >>> A tabela1 tem os dados : >>> (código, descrição) >>> 1 - Hemacia >>> 2 - Plaqueta >>> 3 - Plasma >>> >>> A tabela2 o fracionamento de cada bolsa de sangue : >>> (bolsa, produto, qtdade) >>> b11 100 >>> b12 135 >>> b13 150 >>> b21 200 >>> b23 167 >>> >>> Queria fazer uma consulta que me mostrasse os produtos na coluna correta >>> do cross-tab, assim : >>> >>> Bolsa Hemacia Plaqueta Plasma >>>b1100 135 150 >>>b2200 167 >>> >>> Só consigo este resultado : >>> Bolsa Hemacia Plaqueta Plasma >>>b1100 135 150 >>>b2200 167 >>> >>> >>> Estou executando : >>> >>> Select * from crosstab ( >>> 'select bolsa,produto,qtdade from fraciona >>> inner join tproduto on tproduto.codigo = fraciona.produto >>> order by bolsa') as resultado("Bolsa","Hemacia","Plaqueta","Plasma"); >>> >>> A solução é fazer que a consulta interna do cross-tab gere uma linha >>> assim : >>> b22 null >>> >>> Já tentei com right join mas não funcionou. >>> >>> Alguma ideia ? >>> >>> >>> > Em 18 de fevereiro de 2016 22:10, Matheus Ricardo Espanhol < > matheusespan...@gmail.com> escreveu: > >> André, >> >> Faltou especificar a ordenação no segundo parâmetro do crosstab e >> especificar descrição no lugar do produto: >> >> Select * from crosstab ( >>$$select bolsa,*descricao*,qtdade >> from fraciona >>inner join tproduto on >> tproduto.codigo = fraciona.produto >>order by bolsa >>$$, >> * $$SELECT >> unnest(ARRAY['Hemacia','Plaqueta','Plasma'])$$* >> ) as resultado ("Bolsa" text,"Hemacia" >> int,"Plaqueta" int,"Plasma" int); >> >> Att. >> > > Matheus, > > na verdade meu exemplo é mais complexo e esta segunda parte eu monto > dinamicamente. > > Preciso mesmo é uma solução para a primeira parte do crosstab. > > Valeu a dica. > > >>> Matheus, me desculpe, é isso mesmo Agora que eu vi que estava faltando o segundo parâmetro do crosstab !!! Obrigado. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Consulta Cross-Tab
Em 19 de fevereiro de 2016 09:45, Osvaldo Kussama escreveu: > Em 18/02/16, André Ormenese escreveu: > > Boa tarde pessoal. > > > > Vou dar um exemplo de consulta em cross-tab que gostaria de fazer, e > vejam > > se é possível. > > > > Tenho duas tabelas, uma com código e descrição de produtos do sangue, e > > outra que armazena os dados de resultados de bolsas de sangue fracionada. > > > > Uma bolsa fracionada pode gerar um ou mais produtos. > > > > A tabela1 tem os dados : > > (código, descrição) > > 1 - Hemacia > > 2 - Plaqueta > > 3 - Plasma > > > > A tabela2 o fracionamento de cada bolsa de sangue : > > (bolsa, produto, qtdade) > > b11 100 > > b12 135 > > b13 150 > > b21 200 > > b23 167 > > > > Queria fazer uma consulta que me mostrasse os produtos na coluna correta > do > > cross-tab, assim : > > > > Bolsa Hemacia Plaqueta Plasma > >b1100 135 150 > >b2200 167 > > > > Só consigo este resultado : > > Bolsa Hemacia Plaqueta Plasma > >b1100 135 150 > >b2200 167 > > > > > > Estou executando : > > > > Select * from crosstab ( > > 'select bolsa,produto,qtdade from fraciona > > inner join tproduto on tproduto.codigo = fraciona.produto > > order by bolsa') as resultado("Bolsa","Hemacia","Plaqueta","Plasma"); > > > > A solução é fazer que a consulta interna do cross-tab gere uma linha > assim > > : > > b22 null > > > > Já tentei com right join mas não funcionou. > > > > Alguma ideia ? > > > > Me parece que você deveria utilizar LEFT OUTER JOIN. > > Osvaldo, também não rolou !!! Obrigado. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Consulta Cross-Tab
Em 18/02/16, André Ormenese escreveu: > Boa tarde pessoal. > > Vou dar um exemplo de consulta em cross-tab que gostaria de fazer, e vejam > se é possível. > > Tenho duas tabelas, uma com código e descrição de produtos do sangue, e > outra que armazena os dados de resultados de bolsas de sangue fracionada. > > Uma bolsa fracionada pode gerar um ou mais produtos. > > A tabela1 tem os dados : > (código, descrição) > 1 - Hemacia > 2 - Plaqueta > 3 - Plasma > > A tabela2 o fracionamento de cada bolsa de sangue : > (bolsa, produto, qtdade) > b11 100 > b12 135 > b13 150 > b21 200 > b23 167 > > Queria fazer uma consulta que me mostrasse os produtos na coluna correta do > cross-tab, assim : > > Bolsa Hemacia Plaqueta Plasma >b1100 135 150 >b2200 167 > > Só consigo este resultado : > Bolsa Hemacia Plaqueta Plasma >b1100 135 150 >b2200 167 > > > Estou executando : > > Select * from crosstab ( > 'select bolsa,produto,qtdade from fraciona > inner join tproduto on tproduto.codigo = fraciona.produto > order by bolsa') as resultado("Bolsa","Hemacia","Plaqueta","Plasma"); > > A solução é fazer que a consulta interna do cross-tab gere uma linha assim > : > b22 null > > Já tentei com right join mas não funcionou. > > Alguma ideia ? > Me parece que você deveria utilizar LEFT OUTER JOIN. Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Consulta Cross-Tab
> 2016-02-18 17:32 GMT-02:00 André Ormenese : > >> Boa tarde pessoal. >> >> Vou dar um exemplo de consulta em cross-tab que gostaria de fazer, e >> vejam se é possível. >> >> Tenho duas tabelas, uma com código e descrição de produtos do sangue, e >> outra que armazena os dados de resultados de bolsas de sangue fracionada. >> >> Uma bolsa fracionada pode gerar um ou mais produtos. >> >> A tabela1 tem os dados : >> (código, descrição) >> 1 - Hemacia >> 2 - Plaqueta >> 3 - Plasma >> >> A tabela2 o fracionamento de cada bolsa de sangue : >> (bolsa, produto, qtdade) >> b11 100 >> b12 135 >> b13 150 >> b21 200 >> b23 167 >> >> Queria fazer uma consulta que me mostrasse os produtos na coluna correta >> do cross-tab, assim : >> >> Bolsa Hemacia Plaqueta Plasma >>b1100 135 150 >>b2200 167 >> >> Só consigo este resultado : >> Bolsa Hemacia Plaqueta Plasma >>b1100 135 150 >>b2200 167 >> >> >> Estou executando : >> >> Select * from crosstab ( >> 'select bolsa,produto,qtdade from fraciona >> inner join tproduto on tproduto.codigo = fraciona.produto >> order by bolsa') as resultado("Bolsa","Hemacia","Plaqueta","Plasma"); >> >> A solução é fazer que a consulta interna do cross-tab gere uma linha >> assim : >> b22 null >> >> Já tentei com right join mas não funcionou. >> >> Alguma ideia ? >> >> >> Em 18 de fevereiro de 2016 22:10, Matheus Ricardo Espanhol < matheusespan...@gmail.com> escreveu: > André, > > Faltou especificar a ordenação no segundo parâmetro do crosstab e > especificar descrição no lugar do produto: > > Select * from crosstab ( >$$select bolsa,*descricao*,qtdade from > fraciona >inner join tproduto on > tproduto.codigo = fraciona.produto >order by bolsa >$$, > * $$SELECT > unnest(ARRAY['Hemacia','Plaqueta','Plasma'])$$* > ) as resultado ("Bolsa" text,"Hemacia" > int,"Plaqueta" int,"Plasma" int); > > Att. > Matheus, na verdade meu exemplo é mais complexo e esta segunda parte eu monto dinamicamente. Preciso mesmo é uma solução para a primeira parte do crosstab. Valeu a dica. >> ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral