[pgbr-geral] RESULT TABLE DINAMICAMENTE

2016-02-19 Por tôpico lu moraes santos
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

2016-02-19 Por tôpico VidaUTI
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

2016-02-19 Por tôpico André Ormenese
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

2016-02-19 Por tôpico André Ormenese
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

2016-02-19 Por tôpico Osvaldo Kussama
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-19 Por tôpico André Ormenese
> 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