Re: [pgbr-geral] Auditoria de dados

2014-07-25 Por tôpico Renato Augusto
Eu utilizo tabela(s) temporária(s).
Como é restrita para a conexão corrente, após conectar eu atualizo com as
informações que preciso.
Nas triggers leio esta tabela e gravo nas tabelas auditadas.


Em 25 de julho de 2014 13:26, Fabrízio de Royes Mello <
fabri...@timbira.com.br> escreveu:

> On 25-07-2014 12:18, Flavio Henrique Araque Gurgel wrote:
> >>  >>Pretendo fazer essa operação através de trigger
> >> Utilizo o Audit trigger 91Plus [1]
> >>
> >>  >>O problema é capturar o responsável pela alteração, porque quem faz a
> >> conexão no banco é um usuário único, definido na aplicação
> >> Tive o mesmo problema, como uso jdbc resolvi passando o id do usuário
> >> logado como comentário no final da query:
> >> UPDATE tabela SET campo = true WHERE id = 1 --ul:5
> >> onde ul:5 significa usuáio logado de id 5
> >> alterei a a trigger original do audit trigger para capturar em vez do
> >> usuário do postgres, capturar o id que vem após a string '--ul:'
> >>
> >> [1] https://wiki.postgresql.org/wiki/Audit_trigger_91plus
> >>
> >> Atenciosamente,
> >>
> >> Alessandro Lima
> >
> > Cara, bela ideia essa sua! É um problema recorrente.
> > Você poderia até incluí-la nessa página Wiki como um item adicional.
> >
>
> Outra alternativa para esse problema é utilizar variáveis de sessão
> (custom options). Ex:
>
> fabrizio=# SELECT current_setting('classe.variavel');
> ERROR:  unrecognized configuration parameter "classe.variavel"
> fabrizio=# SELECT set_config('classe.variavel', 'valor', false);
>  set_config
> 
>  valor
> (1 row)
>
> fabrizio=# SELECT current_setting('classe.variavel');
>  current_setting
> -
>  valor
> (1 row)
>
>
> Há algum tempo escrevi um extensão [1] pra manipular essas variáveis de
> sessão.
>
> Essa necessidade surgiu no passado pelo mesmo motivo, e na época a
> aplicação era PHP, então pegamos todo conteúdo da sessao ($_SESSION) e
> gravamos na sessão do PostgreSQL após o pg_connect. Com isso temos as
> mesmas variáveis da aplicação no banco também. Ajudou bastante ;-)
>
> Att,
>
> [1] http://pgxn.org/dist/session_variables/0.0.4/
>
> --
>Fabrízio de Royes Mello Timbira - http://www.timbira.com.br/
>PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



-- 
Renato Becker
Desenvolvimento de Software
DBA PostgreSQL

http://about.me/renatobecker
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Relacionamento Ternário com Foreign Key?

2012-12-12 Por tôpico Renato Augusto
A cardinalidade entre Device e Channel é N-N, não existe precedência entre
elas. Ambas tem FK para Application, o que acontece é que na tabela
associativa entre elas preciso consistir que tenham relação com a mesma
Application.

Renato Becker
Desenvolvimento de Software
DBA PostgreSQL

http://about.me/renatobecker




Em 12 de dezembro de 2012 21:31, Tiago Adami  escreveu:

>
> Em 12/12/2012 20:56, "Renato Augusto"  escreveu:
>
> >
> > Boa noite
> >
> > Tenho uma estrutura semelhante as tabelas abaixo:
> >
> > Table Application
> > - app_id (PK)
> > - app_name
> >
> > Table Device
> > - device_id (PK)
> > - device_name
> > - app_id (FK)
> >
> > Table Channel
> > - channel_id (PK)
> > - channel_name
> > - app_id (FK)
> >
> > A questão é a seguinte, tanto a tabela Device com a tabela Channel tem
> Foreign Key para Application, agora preciso fazer o relacionamento entre
> elas, que teoricamente seria um relacionamento binário entre as 2 chaves
> primárias(device_id, channel_id), porém preciso consistir que tanto Device
> quanto Channel sejam da mesma application, não sei se isto seria um
> relacionamento ternário, pois pelo modelo relacional correto não posso e
> nem consigo implementar app_id nesta tabela de junção.
> >
> > Se alguém já passou por uma situação semelhante ou tem alguma luz,
> agradeço.
> >
>
> Qual a relação de cardinalidade entre Channel e Device? 1-n, n-1,n-n? Se
> por exemplo, Device for precedente a Channel, a pk de Device deve incluir
> app_id e Channel deve ter uma fk com origem em Device, e não em App.
>
> Enviado do meu Galaxy NOTE
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Relacionamento Ternário com Foreign Key?

2012-12-12 Por tôpico Renato Augusto
Boa noite

Tenho uma estrutura semelhante as tabelas abaixo:

Table Application
- app_id (PK)
- app_name

Table Device
- device_id (PK)
- device_name
- app_id (FK)

Table Channel
- channel_id (PK)
- channel_name
- app_id (FK)

A questão é a seguinte, tanto a tabela Device com a tabela Channel tem
Foreign Key para Application, agora preciso fazer o relacionamento entre
elas, que teoricamente seria um relacionamento binário entre as 2 chaves
primárias(device_id, channel_id), porém preciso consistir que tanto Device
quanto Channel sejam da mesma application, não sei se isto seria um
relacionamento ternário, pois pelo modelo relacional correto não posso e
nem consigo implementar app_id nesta tabela de junção.

Se alguém já passou por uma situação semelhante ou tem alguma luz, agradeço.


Renato Becker
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] array retornando valor diferente de varchar

2012-08-15 Por tôpico Renato Augusto
Sim, isso eu sei, além de entender essa lógica de escapar a string em array
quero evitar que isso aconteça.
Se não estiver em array isso não acontece.

Renato Becker


Em 15 de agosto de 2012 22:44, Flavio Henrique Araque Gurgel <
fla...@4linux.com.br> escreveu:

>
> On 15-08-2012 21:52, Renato Augusto wrote:
> > Boa noite
> > Tenho a seguinte situação, se faço SELECT em uma tabela com campos
> > varchar está retornando corretamente os dados, mas se faço SELECT destes
> > mesmos dados em um ARRAY de um SUB-SELECT, então está retornando os
> > valores com barra invertida (\) no início e fim da coluna..
> > Mais um detalhe, se o valor da coluna não tiver espaços retorna certo,
> > senão retorna conforme abaixo:
> (...)
>
> > SELECT com retorno inválido:
> >
> > SELECT m.mat_id, m.mat_descricao, (SELECT array(SELECT
> >
> array[mc.matcor_id::varchar,mc.matcor_descricao::varchar,mc.matcor_foto::varchar]::varchar
> >
> >FROM public.material_cores mc WHERE mc.sis_ten_id = m.sis_ten_id AND
> > mc.mat_id = m.mat_id ORDER BY mc.matcor_id)) AS arr_mat_cores
> >FROM public.material m WHERE m.sis_ten_id = 2 ORDER BY m.mat_id
> >
> > 1;"Napa";"{"{1,\"Napa Avelã\",Napa_1.jpg}","{2,\"Napa
> > Bandeira\",Napa_2.jpg}","{3,\"Napa Cobalto\",Napa_3.jpg}","{4,\"Napa
> > Coral\",Napa_4.jpg}","{5,\"Napa Golden\",Napa_5.jpg}","{6,\"Napa
> > Lilac\",Napa_6.jpg}","{7,\"Napa Lima\",Napa_7.jpg}","{8,\"Napa
> > Magemta\",Napa_8.jpg}","{9,\"Napa Nuvem\",Napa_9.jpg}","{10,\"Napa
> > Preto\",Napa_10.jpg}","{11,\"Napa Rato\",Napa_11.jpg}","{12,\"Napa
> > Rosado\",Napa_12.jpg}","{13,\"Napa Turquesa\",Napa_13.jpg}","{14,\"Napa
> > Vermelho\",Napa_14.jpg}"}"
> >
> > Vejam a diferença em um e outro SELECT:
> >
> > "Napa Avelã" -> \"Napa Avelã\"
> >
> > Alguém já passou por algum caso como esse?
>
> Sim
> A barra invertida é o PostgreSQL escapando as aspas das cadeias de
> caracteres.
> É o jeito que se faz para saída de vetores, que foi o que você pediu no
> SELECT.
>
> []s
> Flavio Gurgel
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] array retornando valor diferente de varchar

2012-08-15 Por tôpico Renato Augusto
Boa noite
Tenho a seguinte situação, se faço SELECT em uma tabela com campos varchar
está retornando corretamente os dados, mas se faço SELECT destes mesmos
dados em um ARRAY de um SUB-SELECT, então está retornando os valores com
barra invertida (\) no início e fim da coluna..
Mais um detalhe, se o valor da coluna não tiver espaços retorna certo,
senão retorna conforme abaixo:

SELECT OK:

SELECT * FROM material_cores;

3;1;1;"Napa Avelã";"2012-08-15 16:33:02.468763";"Napa_1.jpg"
3;1;2;"Napa Bandeira";"2012-08-15 16:33:02.468763";"Napa_2.jpg"
3;1;3;"Napa Cobalto";"2012-08-15 16:33:02.468763";"Napa_3.jpg"
3;1;4;"Napa Coral";"2012-08-15 16:33:02.468763";"Napa_4.jpg"

SELECT com retorno inválido:

SELECT m.mat_id, m.mat_descricao, (SELECT array(SELECT
array[mc.matcor_id::varchar,mc.matcor_descricao::varchar,mc.matcor_foto::varchar]::varchar
  FROM public.material_cores mc WHERE mc.sis_ten_id = m.sis_ten_id AND
mc.mat_id = m.mat_id ORDER BY mc.matcor_id)) AS arr_mat_cores
  FROM public.material m WHERE m.sis_ten_id = 2 ORDER BY m.mat_id

1;"Napa";"{"{1,\"Napa Avelã\",Napa_1.jpg}","{2,\"Napa
Bandeira\",Napa_2.jpg}","{3,\"Napa Cobalto\",Napa_3.jpg}","{4,\"Napa
Coral\",Napa_4.jpg}","{5,\"Napa Golden\",Napa_5.jpg}","{6,\"Napa
Lilac\",Napa_6.jpg}","{7,\"Napa Lima\",Napa_7.jpg}","{8,\"Napa
Magemta\",Napa_8.jpg}","{9,\"Napa Nuvem\",Napa_9.jpg}","{10,\"Napa
Preto\",Napa_10.jpg}","{11,\"Napa Rato\",Napa_11.jpg}","{12,\"Napa
Rosado\",Napa_12.jpg}","{13,\"Napa Turquesa\",Napa_13.jpg}","{14,\"Napa
Vermelho\",Napa_14.jpg}"}"

Vejam a diferença em um e outro SELECT:

"Napa Avelã" -> \"Napa Avelã\"

Alguém já passou por algum caso como esse?

Renato Becker
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] BETWEEN X Index Scan

2012-06-26 Por tôpico Renato Augusto
O tipo de campo é timestamp..

Renato Becker


Em 26 de junho de 2012 16:36, Flavio Henrique Araque Gurgel <
fla...@4linux.com.br> escreveu:

>
> Em 26-06-2012 16:30, Fabrízio de Royes Mello escreveu:
> > Retire aquele "::date" do teu WHERE com BETWEEN e repita o teste.
>
> Completando o colega Fabrízio...
> Qual é o tipo de dados da coluna com a data?
>
> []s
>
> Flavio Henrique A. Gurgel
> Consultor e Instrutor 4Linux
> Tel: +55-11-2125-4747
> www.4linux.com.br
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] BETWEEN X Index Scan

2012-06-26 Por tôpico Renato Augusto
Realmente Fabrízio, funcionou normalmente..
Não entendo a lógica do type cast alterar a leitura indexada, mas enfim,
agradeço !!!
Obrigado.


Renato Becker

2012/6/26 Fabrízio de Royes Mello 

>
>
> Em 26 de junho de 2012 16:27, Renato Augusto escreveu:
>
> Olá Flávio..
>> Sim, já rodei o ANALYZE, VACUUM e REINDEX, mas o EXPLAIN continua com
>> essa diferença absurda..
>> A tabela tem 66.000 registros, segue o SQL:
>>
>> EXPLAIN ANALYZE
>> SELECT hist.endterminal AS "hist.endterminal",
>>hist.indice,
>>hist.funcao,
>>hist.numos,
>>hist.codfunc,
>>hist.fase,
>>hist.maquina,
>>hist.datahoraini,
>>hist.datahorafim,
>>hist.qtdeproduzida,
>>hist.qtderejeitada,
>>hist.apontamnumerico,
>>hist.horimetro,
>>hist.atualizado
>>   FROM autech.thistprod hist
>>WHERE ( ( hist.datahorafim >= '06/20/2012' AND hist.datahorafim <=
>> '06/26/2012'))
>>--WHERE ( ( hist.datahorafim::date between '06/20/2012' and
>> '06/26/2012'))
>>   ORDER BY 1,1
>>
>>
> Retire aquele "::date" do teu WHERE com BETWEEN e repita o teste.
>
> Att,
>
> --
> Fabrízio de Royes Mello
> Consultoria/Coaching PostgreSQL
> >> Blog sobre TI: http://fabriziomello.blogspot.com
> >> Perfil Linkedin: http://br.linkedin.com/in/fabriziomello
> >> Twitter: http://twitter.com/fabriziomello
>
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] BETWEEN X Index Scan

2012-06-26 Por tôpico Renato Augusto
Olá Flávio..
Sim, já rodei o ANALYZE, VACUUM e REINDEX, mas o EXPLAIN continua com essa
diferença absurda..
A tabela tem 66.000 registros, segue o SQL:

EXPLAIN ANALYZE
SELECT hist.endterminal AS "hist.endterminal",
   hist.indice,
   hist.funcao,
   hist.numos,
   hist.codfunc,
   hist.fase,
   hist.maquina,
   hist.datahoraini,
   hist.datahorafim,
   hist.qtdeproduzida,
   hist.qtderejeitada,
   hist.apontamnumerico,
   hist.horimetro,
   hist.atualizado
  FROM autech.thistprod hist
   WHERE ( ( hist.datahorafim >= '06/20/2012' AND hist.datahorafim <=
'06/26/2012'))
   --WHERE ( ( hist.datahorafim::date between '06/20/2012' and
'06/26/2012'))
  ORDER BY 1,1

Renato Becker


Em 26 de junho de 2012 16:13, Flavio Henrique Araque Gurgel <
fla...@4linux.com.br> escreveu:

>
> Em 26-06-2012 15:51, Renato Augusto escreveu:
> > Boa tarde!
> >
> > Tenho uma tabela com um campo date e tenho um índice para este campo..
> > Gostaria de entender porque um WHERE nesse campo date usando ">= AND <="
> > faz a leitura de dados através do índice(Index Scan) e usando "BETWEEN"
> > a leitura é feita de forma sequencial?
> >
> > Comparativos do EXPLAIN ANALYZE abaixo:
> >
> > SELECT com WHERE ( ( hist.datahorafim::date between '06/20/2012' and
> > '06/26/2012'))
> >
> > "Sort  (cost=1002255.87..1002256.70 rows=331 width=77) (actual
> > time=42.662..48.170 rows=27319 loops=1)"
> > "  Sort Key: endterminal"
> > "  Sort Method:  quicksort  Memory: 4141kB"
> > "  ->  Seq Scan on thistprod hist  (cost=100.00..1002242.02
> > rows=331 width=77) (actual time=2.284..32.959 rows=27319 loops=1)"
> > "Filter: (((datahorafim)::date >= '2012-06-20'::date) AND
> > ((datahorafim)::date <= '2012-06-26'::date))"
> > "Total runtime: 52.685 ms"
> >
> > SELECT com WHERE hist.datahorafim >= '06/20/2012' AND hist.datahorafim
> > <= '06/26/2012'
> >
> > "Sort  (cost=3507.53..3569.86 rows=24932 width=77) (actual
> > time=18.105..23.105 rows=24865 loops=1)"
> > "  Sort Key: endterminal"
> > "  Sort Method:  quicksort  Memory: 3815kB"
> > "  ->  Bitmap Heap Scan on thistprod hist  (cost=393.81..1686.79
> > rows=24932 width=77) (actual time=2.670..9.120 rows=24865 loops=1)"
> > "Recheck Cond: ((datahorafim >= '2012-06-20 00:00:00'::timestamp
> > without time zone) AND (datahorafim <= '2012-06-26 00:00:00'::timestamp
> > without time zone))"
> > "->  Bitmap Index Scan on idx_autech_thistprod_9
> >   (cost=0.00..387.57 rows=24932 width=0) (actual time=2.622..2.622
> > rows=24865 loops=1)"
> > "  Index Cond: ((datahorafim >= '2012-06-20
> > 00:00:00'::timestamp without time zone) AND (datahorafim <= '2012-06-26
> > 00:00:00'::timestamp without time zone))"
> > "Total runtime: 27.227 ms"
> >
> >
> > Se alguém souber o motivo, agradeço!!
>
> Sem a consulta completa não dá pra te responder.
> Existe "sort" no plano de execução, então, estou supondo que você está
> usando cláusula ORDER BY.
>
> Manda a consulta completa pra cá pra entendermos.
>
> O planejador toma decisões baseado nas estatísticas. Sua primeira
> consulta está prevendo 331 linhas e a segunda quase 25 mil linhas.
>
> Suas estatísticas estão atualizadas?
> Seu autovacuum está ligado e configurado?
>
> Rode um ANALYZE nas tabelas envolvidas e refaça os EXPLAIN ANALYZE.
>
> []s
>
> Flavio Henrique A. Gurgel
> Consultor e Instrutor 4Linux
> Tel: +55-11-2125-4747
> www.4linux.com.br
>
>
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] BETWEEN X Index Scan

2012-06-26 Por tôpico Renato Augusto
Boa tarde!

Tenho uma tabela com um campo date e tenho um índice para este campo..
Gostaria de entender porque um WHERE nesse campo date usando ">= AND <="
faz a leitura de dados através do índice(Index Scan) e usando "BETWEEN" a
leitura é feita de forma sequencial?

Comparativos do EXPLAIN ANALYZE abaixo:

SELECT com WHERE ( ( hist.datahorafim::date between '06/20/2012' and
'06/26/2012'))

"Sort  (cost=1002255.87..1002256.70 rows=331 width=77) (actual
time=42.662..48.170 rows=27319 loops=1)"
"  Sort Key: endterminal"
"  Sort Method:  quicksort  Memory: 4141kB"
"  ->  Seq Scan on thistprod hist  (cost=100.00..1002242.02
rows=331 width=77) (actual time=2.284..32.959 rows=27319 loops=1)"
"Filter: (((datahorafim)::date >= '2012-06-20'::date) AND
((datahorafim)::date <= '2012-06-26'::date))"
"Total runtime: 52.685 ms"

SELECT com WHERE hist.datahorafim >= '06/20/2012' AND hist.datahorafim <=
'06/26/2012'

"Sort  (cost=3507.53..3569.86 rows=24932 width=77) (actual
time=18.105..23.105 rows=24865 loops=1)"
"  Sort Key: endterminal"
"  Sort Method:  quicksort  Memory: 3815kB"
"  ->  Bitmap Heap Scan on thistprod hist  (cost=393.81..1686.79 rows=24932
width=77) (actual time=2.670..9.120 rows=24865 loops=1)"
"Recheck Cond: ((datahorafim >= '2012-06-20 00:00:00'::timestamp
without time zone) AND (datahorafim <= '2012-06-26 00:00:00'::timestamp
without time zone))"
"->  Bitmap Index Scan on idx_autech_thistprod_9
 (cost=0.00..387.57 rows=24932 width=0) (actual time=2.622..2.622
rows=24865 loops=1)"
"  Index Cond: ((datahorafim >= '2012-06-20
00:00:00'::timestamp without time zone) AND (datahorafim <= '2012-06-26
00:00:00'::timestamp without time zone))"
"Total runtime: 27.227 ms"


Se alguém souber o motivo, agradeço!!


Renato Becker
Desenvolvimento de Software
DBA PostgreSQL
@renatobecker
http://br.linkedin.com/pub/renato-becker/21/a/988
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Reaproveitar retorno de Function em SELECT

2011-11-08 Por tôpico Renato Augusto
Hugo,

Funcionou perfeitamente!
Muito obrigado..
Abraço.

Renato Becker



Em 8 de novembro de 2011 09:28, Hugo Bastos Bucker
 escreveu:
> Bom dia Renato,
>
> Em 8 de novembro de 2011 07:10, Renato Augusto 
> escreveu:
>>
>> Bom dia a todos,
>>
>> Estou com a seguinte situação nesse SQL:
>>
>> SELECT mod1.tb_oper_id AS operacao,
>>         mod1.tb_modoper_tempo_bruto AS tempo_bruto,
>>         mod1.tb_modoper_valorcusto AS valor_custo,
>>         estabset1.tb_estset_eficcustos AS eficiencia,
>>         ROUND((mod1.tb_modoper_tempo_bruto /
>> (estabset1.tb_estset_eficcustos / 100)),5) AS tempo_total,
>>         ROUND((mod1.tb_modoper_valorcusto),5) AS valor_total,
>>         tipooper1.tb_tipooper_tipo AS tipo_oper,
>>         sch_custos.fun_custo_minuto_setor(mod1.sis_emp_id,
>> emp1.par_scu_tipo_calc_custo_minuto, pestab, oper1.tb_set_id,
>> tipooper1.tb_tipooper_tipo) AS custo_minuto,
>>    FROM sch_pcp.tb_modoper mod1 
>>
>
> Você pode tentar usar o WITH assim:
>
> WITH consulta AS (
> SELECT mod1.tb_oper_id AS operacao,
>         mod1.tb_modoper_tempo_bruto AS tempo_bruto,
>         mod1.tb_modoper_valorcusto AS valor_custo,
>         estabset1.tb_estset_eficcustos AS eficiencia,
>         ROUND((mod1.tb_modoper_tempo_
>>
>> bruto /
>> (estabset1.tb_estset_eficcustos / 100)),5) AS tempo_total,
>>         ROUND((mod1.tb_modoper_valorcusto),5) AS valor_total,
>>         tipooper1.tb_tipooper_tipo AS tipo_oper,
>>         sch_custos.fun_custo_minuto_setor(mod1.sis_emp_id,
>> emp1.par_scu_tipo_calc_custo_minuto, pestab, oper1.tb_set_id,
>> tipooper1.tb_tipooper_tipo) AS custo_minuto,
>>    FROM sch_pcp.tb_modoper mod1 
>
> ) SELECT * FROM consulta WHERE tempo_total > 10;
>
>
>>
>> O que acontece é que tenho que chamar mais uma Function ->
>> sch_pcp.fun_valor_impostos_operacao()  onde um de seus parâmetros é o
>> resultado da expressão do primeiro ROUND e outro parâmetro é o
>> resultado da Function  sch_custos.fun_custo_minuto_setor() chamada
>> também no SQL..
>> O resultado desta Function de valor de impostos deve ser aproveitado
>> no cálculo para encontrar o Valor Líquido Final.
>>
>>
>> A questão é:
>> - Como o Alias do Round nem da Function é reconhecido dentro da
>> sentença, é possível armazenar um valor calculado em uma expressão ou
>> o valor do Result de uma Function para ser aproveitado na mesma
>> sentença sem fazer novamente a chamada desta Function ?
>>
>> Obrigado.
>>
>> Renato Becker.
>> ___
>> pgbr-geral mailing list
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
> Abraços.
>
> Hugo B. Bucker
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Reaproveitar retorno de Function em SELECT

2011-11-08 Por tôpico Renato Augusto
Bom dia a todos,

Estou com a seguinte situação nesse SQL:

SELECT mod1.tb_oper_id AS operacao,
 mod1.tb_modoper_tempo_bruto AS tempo_bruto,
 mod1.tb_modoper_valorcusto AS valor_custo,
 estabset1.tb_estset_eficcustos AS eficiencia,
 ROUND((mod1.tb_modoper_tempo_bruto /
(estabset1.tb_estset_eficcustos / 100)),5) AS tempo_total,
 ROUND((mod1.tb_modoper_valorcusto),5) AS valor_total,
 tipooper1.tb_tipooper_tipo AS tipo_oper,
 sch_custos.fun_custo_minuto_setor(mod1.sis_emp_id,
emp1.par_scu_tipo_calc_custo_minuto, pestab, oper1.tb_set_id,
tipooper1.tb_tipooper_tipo) AS custo_minuto,
FROM sch_pcp.tb_modoper mod1 

O que acontece é que tenho que chamar mais uma Function ->
sch_pcp.fun_valor_impostos_operacao()  onde um de seus parâmetros é o
resultado da expressão do primeiro ROUND e outro parâmetro é o
resultado da Function  sch_custos.fun_custo_minuto_setor() chamada
também no SQL..
O resultado desta Function de valor de impostos deve ser aproveitado
no cálculo para encontrar o Valor Líquido Final.


A questão é:
- Como o Alias do Round nem da Function é reconhecido dentro da
sentença, é possível armazenar um valor calculado em uma expressão ou
o valor do Result de uma Function para ser aproveitado na mesma
sentença sem fazer novamente a chamada desta Function ?

Obrigado.

Renato Becker.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral