Re: [pgbr-geral] Dbexpress X Postgres

2009-08-17 Thread izaque Maciel
Tem um Driver do Thiago Borges em www.thborges.com, que é demo, não sei te
falar se tem
algum FREE.

2009/8/17 Adriano Espinoza de Oliveira 

> Bom dia a todos.Pessoal, estou usando Delphi com dbExpress e driver para o
> postgres da Devart.
> O problema é que não estou encontrando outro driver p/ utilizar na
> aplicação e o driver atual é Trial por 30 dias.
> Alguem tem alguma dica?
> Agradeço antecipadamente.
> Adriano
>
> ___
> 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] Consulta com acentos.

2010-01-12 Thread izaque Maciel
Bom dia pessoal,

Sei que aqui nesta lista ja foi discutido o assunto, porem o banco já está
assim:

Encoding client: LATIN1
Encoding server: LATIN1
LC_CTYPE='C' e LC_COLLATE='C'
Template0
SO: Windows 7 no XP também da a mesma coisa.
IDE: Delphi 2010
Zeoslib 7.

  No pgAdmin ele mostra os caracteres com acento, normalmente e as
consultas com acentos tambem são retornadas corretamente.
No entanto, para conexão com o postgresql no delphi, utilizo o Zeos, e no
grid ele mostra os caracteres corretamente, so que
quando é uma pesquisa com acento ele não retorna nada.
Também já tentei com o Encoding WIN1252.
  Creio que possa ser o componente Zeos, mas se alguém ja passou por
isso, ou tiver alguma ideia, por favor me ajudem.

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 com acentos.

2010-01-14 Thread izaque Maciel
Muito obrigado Jorge, com essa função deu certo, que Deus te abençoe!




2010/1/12 Jorge Vilela 

> Já tentou usar to_ascii()?
>
> SELECT * FROM TABELA WHERE TO_ASCII(campo) LIKE TO_ASCII('%busca%')
>
>
>
> Jorge Vilela
>
>
> 2010/1/12 izaque Maciel 
>
>> Bom dia pessoal,
>>
>> Sei que aqui nesta lista ja foi discutido o assunto, porem o banco já está
>> assim:
>>
>> Encoding client: LATIN1
>> Encoding server: LATIN1
>> LC_CTYPE='C' e LC_COLLATE='C'
>> Template0
>> SO: Windows 7 no XP também da a mesma coisa.
>> IDE: Delphi 2010
>> Zeoslib 7.
>>
>>   No pgAdmin ele mostra os caracteres com acento, normalmente e as
>> consultas com acentos tambem são retornadas corretamente.
>> No entanto, para conexão com o postgresql no delphi, utilizo o Zeos, e no
>> grid ele mostra os caracteres corretamente, so que
>> quando é uma pesquisa com acento ele não retorna nada.
>> Também já tentei com o Encoding WIN1252.
>>   Creio que possa ser o componente Zeos, mas se alguém ja passou
>> por isso, ou tiver alguma ideia, por favor me ajudem.
>>
>> Obrigado.
>>
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Oportunidade MG.

2010-04-16 Thread izaque Maciel
Boa noite pessoal,

Segue os dados de uma vaga que tomei conhecimento, pelo site DevMedia:

Data 16/4/2010  Contratante Confidencial  Título da oferta: Analista
Desenvolvedor PostGreSQL  Descrição Uberlândia - MG - 16/04/10

Analista Desenvolvedor XHarbor

PostGreeSQL para atuar na região de Uberlândia/MG.

Benefícios: Convênio Médico, Convênio Odontologico e Seguro de Vida.

Salário a combinar.

Regime de contratação CLT ou PJ.

Empresa: Stefanini IT Solutions.

contato:

vagas...@stefanini.com
   Valor R$  Telefone
 E-mail
 Site:
 Tipo de contrato: Contratado  Local de trabalho: No escritorio (in
office)  Qtd
de horas: Horário integral  Tipo Programação/Desenvolvimento  Local Uberlândia
, MG, Brasil
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Acentos e minúsculo/maiúsculo.

2013-03-20 Thread izaque Maciel
Bom dia pessoal, sou novo na lista, mas gostaria se possível, da ajuda de
vocês.

Instalei a última versão do PostgreSQL 9.2 no Windows 7 32bits, e gostaria
de
utilizar o postgresql como utilizava no Firebird, consultando registros que
estão gravados
em minúsculo / maiúsculo, com acento ou sem acento. No firebird eu
utilizava nos
campos VARCHAR da seguinte forma:

Character Set: ISO8859_1 Collate: pt_BR

Jose
José
JOSE
JOSÉ
jose
josé
josÉ

caso eu pesquise por "jose", a consulta me retornará todos os "Josés"
encontrados com ou sem acento e maiúsculo ou minúsculo, ou seja,
é "Case Insensitive" e "Accent Insensitive".
Já configurei o PostgreSQL para utilizar o ISO8859_1, mas não sei como
setá-lo para pt_BR.

Há uma correspondência no PostgreSQL?
Caso ele fique ISO8859_1 e pt_BR, ele funcionará conforme mostrado acima?
Qual configuração se encaixaria para funcionar igual ao firebird mencionado
acima?
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Acentos e minúsculo/maiúsculo.

2013-03-20 Thread izaque Maciel
"Evite o top-post." O que é?

 Sempre é mais vantajoso usar UTF8 como armazenamento do banco de dados.
Você pode usar um encoding diferente para a aplicação  cliente usando a
configuração client_encoding.

Sou novo no PostgreSQL, como ficaria então no UTF8, encoding UTF8 no
servidor e client_encoding ficaria o quê?
Utilizava firebird, mas estou migrando do firebird para PostgreSQL, com
Delphi.


> []s
>
> __**
> Flavio Henrique A. Gurgel
> Líder de Projetos Especiais
> Consultoria, Projetos & Treinamentos 4LINUX
> Tel1: +55-11.2125-4747 ou 2125-4748
> www.4linux.com.br
> email: fla...@4linux.com.br
> __
> FREE SOFTWARE SOLUTIONS
>
> __**_
> 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] Acentos e minúsculo/maiúsculo.

2013-03-21 Thread izaque Maciel
Humm, e se eu utilizasse o Character Set "SQL_ASCII" em vez de fazer isso
nos selects, daria no mesmo?

Em 21 de março de 2013 08:42, Fernando Wobeto
escreveu:

> eu uso aqui comparação TO_ASCII, ou seja
>
> WHERE TO_ASCII(campo) ILIKE TO_ASCII('jose');
>
> Funciona
>
> *Fernando Wobeto*
>
>
> Em 20 de março de 2013 11:07, izaque Maciel escreveu:
>
> Muito obrigado pessoal. Vou testar essas opções!
>>
>> Em 20 de março de 2013 10:54, Flavio Henrique Araque Gurgel <
>> fla...@4linux.com.br> escreveu:
>>
>>
>>> Em 20-03-2013 10:49, izaque Maciel escreveu:
>>>
>>>
>>>> "Evite o top-post." O que é?
>>>>
>>>
>>> Responder acima da mensagem anterior.
>>> Prefira responder "quotando", mais ou menos como estou fazendo aqui.
>>>
>>>
>>>Sempre é mais vantajoso usar UTF8 como armazenamento do banco de
>>>> dados. Você pode usar um encoding diferente para a aplicação
>>>>   cliente usando a configuração client_encoding.
>>>>
>>>> Sou novo no PostgreSQL, como ficaria então no UTF8, encoding UTF8 no
>>>> servidor e client_encoding ficaria o quê?
>>>>
>>>
>>> Se sua aplicação foi feita em iso-8859-1, use LATIN1 como
>>> client_encoding. Veja a tabela:
>>> http://www.postgresql.org/**docs/9.2/static/multibyte.html<http://www.postgresql.org/docs/9.2/static/multibyte.html>
>>>
>>> O PostgreSQL consegue traduzir UTF8 para os outros códigos de página e
>>> vice-versa.
>>>
>>>
>>>
>>>  Utilizava firebird, mas estou migrando do firebird para PostgreSQL, com
>>>> Delphi.
>>>>
>>>
>>> A curva de aprendizado não tão dura uma vez que você passa os desafios
>>> iniciais.
>>>
>>> []s
>>>
>>> __**__
>>>
>>> Flavio Henrique A. Gurgel
>>> Líder de Projetos Especiais
>>> Consultoria, Projetos & Treinamentos 4LINUX
>>> Tel1: +55-11.2125-4747  ou 2125-4748
>>> www.4linux.com.br <http://www.4linux.com.br>
>>> email: fla...@4linux.com.br <mailto:fla...@4linux.com.br>
>>>
>>> __
>>> FREE SOFTWARE SOLUTIONS
>>> __**_
>>> pgbr-geral mailing list
>>> pgbr-geral@listas.postgresql.**org.br
>>> https://listas.postgresql.org.**br/cgi-bin/mailman/listinfo/**pgbr-geral<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 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] Desconsiderar maiúsculo/minúsculo em campos varchar

2013-04-01 Thread izaque Maciel
Boa tarde, alguns dias atrás, precisei que os campos varchar funcionassem
como Case Insensitive, mas tudo que o pessoal me retornou foi algo como:

select upper(c.nome_cli) from clientes c like upper(c.nome_cli), e um outro
usuário me reportou que eu poderia utilizar o tipo de dado CITEXT, que no
delphi não
ficou legal. Foi então que por um acaso procurando uma outra coisa
encontrei este artigo abaixo, caso alguém queira utilizar:

http://www.postgresonline.com/journal/archives/24-Using-MS-Access-with-PostgreSQL.html


   PostgreSQL is case-sensitive

   One of the most annoying things for people coming from a Windows
   environment is that PostgreSQL is case-sensitive whereas MS Access
   in-general is not (except when querying case sensitive databases).
   Explaining this to users and training them on case sensitivity is just a
   lot of hassle, not to mention the time-loss of having to upper case things.
   Hopefully this will change in the future so that PostgreSQL supports
   different collation depending field by field similar to the way SQL Server
   2005 does. Needless to say, when running a query in MS Access, one has
   three options:
   1. Write your query along the lines of *upper(somefield) LIKE
  UCase('abc%')* and make sure you have a functional index on
  upper(somefield)
  2. Use the custom data type such as *citext* which you need to
  compile yourself.
   - or Put functional upper(somefield) indexes on your common fields and
  use the freedom that PostgreSQL gives you to redefine varchar
operators in
  your database by doing the below. NOTE that this gives you the benefit of
  not having to redefine varchar fields as citext or anything like
that thus
  making it more portable to transfer back and forth between non-case
  sensitive dbs or use the same schema as non-case sensitive dbs. Note we
  couldn't do the below with *text* because that is defined high up and
  can not be overwritten. We can overwrite the behavior of varchars however
  because varchars get implicitly cast to text and use the text
operators. By
  using PostgreSQL's operator overload feature, we can define special
  behavior for varchar when used in comparators. When Postgres
sees there is
  such an operator, it will use that instead of cast varchar to text and
  using the default text operators. The downside is that this will not work
  with PostgreSQL text (NOTE: varchar in PostgreSQL/ANSI SQL maps
to text in
  MS Access and text in PostgreSQL/ANSI maps to memo in MS Access
- all very
  confusing) . In most cases this is a non-issue since most
searches are done
  on short Access text fields rather than memo fields. *NOTE: Use with
  caution. We haven't thoroughly tested this technique to catch all the
  possible situations where it can go wrong. It seems to behave correctly
  from our naive tests.*
  - Doing the above allows us to define a query like this in MS Access
  - [image: Case insensitive search] Which yields: [image: Johns and
  Farns]
   -


   CREATE OR REPLACE FUNCTION ci_caseinsmatch(varchar, varchar) RETURNS boolean
   AS $$
  SELECT UPPER($1)::text = UPPER($2)::text;
   $$
   LANGUAGE sql
   IMMUTABLE STRICT;CREATE OPERATOR = (
   PROCEDURE = ci_caseinsmatch,
   LEFTARG = varchar,
   RIGHTARG = varchar,
   COMMUTATOR = =,
   NEGATOR = <>
   );CREATE FUNCTION ci_like(varchar, varchar) RETURNS boolean
   AS $$
  SELECT UPPER($1)::text LIKE UPPER($2)::text;
   $$
   LANGUAGE sql;CREATE OPERATOR ~~(
 PROCEDURE = ci_like,
 LEFTARG = varchar,
 RIGHTARG = varchar,
 RESTRICT = likesel,
 JOIN = likejoinsel);   

   And can now be written in SQL even in PgAdmin without all that messy
   upper lower stuff and still uses indexes if you have them defined on say
   upper(first_name) or doing range case-insensitive searches e.g.
   (customer.last_name between 'f' and 'h') :
SELECT customer.*
   FROM customer
   WHERE customer.last_name
Like 'Farns%' OR customer.first_name = 'Jim';
Which will give you all customers with first name Jim or last name like
   Farns. Best of all, if you put in a functional index on last name and first
   name like below, it will use those indexes when doing equality or between
   ranges etc..

   Eu estou utilizando e até o momento está funcionando como eu queria.
   Acho que combinando o "Unaccent" ele também irá desconsiderar os acentos,
   mas isso não testei ainda.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Linguagem Stored Procedure.

2013-04-11 Thread izaque Maciel
Boa tarde,
gostaria de saber de vcs, qual a melhor linguagem do postgresql que se
assemelha
com a linguagem utilizada no Firebird, para stored procedure?
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Linguagem Stored Procedure.

2013-04-11 Thread izaque Maciel
Ah tentarei essa PL/pgSQL.
Obrigado por responderem!


Em 11 de abril de 2013 17:04, Matheus de Oliveira  escreveu:

>
> 2013/4/11 izaque Maciel 
>
>> Boa tarde,
>> gostaria de saber de vcs, qual a melhor linguagem do postgresql que se
>> assemelha
>> com a linguagem utilizada no Firebird, para stored procedure?
>>
>
> Se for por semelhança, acredito que a PL/pgSQL é a que mais se assemelhe
> mesmo.
>
> Atenciosamente,
> --
> Matheus de Oliveira
> Analista de Banco de Dados
> Dextra Sistemas - MPS.Br nível F!
> www.dextra.com.br/postgres
>
>
> ___
> 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] Stored Procedure.

2013-04-25 Thread izaque Maciel
Bom dia pessoal, não consegui concluir esta procedure pela questão do
retorno, que tem que me retornar todos os campos do "último select" abaixo,
e com o retorno deste último select, criarei outra stored procedure para
pegar o retorno dessa e trabalharei alguns cálculos. Peço a ajuda de vocês,
obrigado.


CREATE OR REPLACE FUNCTION public.retorna_valores_go (
  id_emolumento numeric(12,2),
  dt_calculo_emol date,
  valor_documento numeric(12,2)
)
RETURNS SETOF numeric AS
$body$
DECLARE

  vidEmolumento numeric(12,2);
  vidVigencia numeric(12,2);
  vidEmolItens numeric(12,2);
  regEmolItens record;
BEGIN

  -- Verifica se existe o emolumento
  select e.id into vidEmolumento
  from emolumentos e
  where e.id = id_emolumento;

  -- Se encontrado, localiza a vigência
  if (videmolumento is not null) then
  begin
  select v.id into vidvigencia
from vigencia v
where dt_calculo_emol between v.dt_inicial and v.dt_final;

-- Se econtrada a vigência, localiza o emolumento pelo valor
if (vidvigencia is not null) then
  select e.id into videmolitens
  from emolumentos_itens e
  where valor_documento between e.fx_valor_final and e.fx_valor_final;
end if;

-- Se foi localizado o emolumento
if (videmolitens is not null) then
  select e.id into videmolitens
  from emolumentos_itens e
  where e.id_emolumentos  = videmolumento and
e.id_vigencia = vidvigencia and
e.fx_valor_inicial = 0 and
e.fx_valor_final   = 0;
end if;

if (videmolitens is not null) then
begin
  select e.id,
 e.id_emolumentos,
 e.fx_valor_inicial,
 e.fx_valor_final,
 e.valor_emolumento,
 e.tx_jud,
 e.fundesp,
 e.valor2,
 e.valor3,
 e.valor4,
 e.valor5,
 e.outras_despesas,
 e.pag_extra_inicio,
 e.valor_pag_extra,
 e.fundo_pag_extra,
 e.tx_jud_pag_extra,
 e.cod_tab_correg,
 e.cod_interno,
 e.calc_txjud,
 e.calc_fundesp,
 e.calc_valor2,
 e.calc_valor3,
 e.calc_valor4,
 e.calc_valor5,
 e.calc_pagina_extra into regEmolItens
  from emolumentos_itens e
  where valor_documento between e.fx_valor_final and e.fx_valor_final;

  return regEmolItens;
end;
end if;
  end;
  end if;


END
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100;
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Stored Procedure.

2013-04-25 Thread izaque Maciel
Certo, mas pode me dar um exemplo, de como ficaria isso?


Em 25 de abril de 2013 08:54, Jean Domingues escreveu:

> Mas vc esta retornando um record onde deveria retornar numeric. E, se for
> set of, retorne com return next (varios registros), senao, nao use setof,
> use apenas numeric no tipo do retorno.
>
>   --
>  *De:* izaque Maciel 
> *Para:* Comunidade PostgreSQL Brasileira <
> pgbr-geral@listas.postgresql.org.br>
> *Enviadas:* Quinta-feira, 25 de Abril de 2013 8:11
> *Assunto:* [pgbr-geral] Stored Procedure.
>
> Bom dia pessoal, não consegui concluir esta procedure pela questão do
> retorno, que tem que me retornar todos os campos do "último select" abaixo,
> e com o retorno deste último select, criarei outra stored procedure para
> pegar o retorno dessa e trabalharei alguns cálculos. Peço a ajuda de vocês,
> obrigado.
>
>
> CREATE OR REPLACE FUNCTION public.retorna_valores_go (
>   id_emolumento numeric(12,2),
>   dt_calculo_emol date,
>   valor_documento numeric(12,2)
> )
> RETURNS SETOF numeric AS
> $body$
> DECLARE
>
>   vidEmolumento numeric(12,2);
>   vidVigencia numeric(12,2);
>   vidEmolItens numeric(12,2);
>   regEmolItens record;
> BEGIN
>
>   -- Verifica se existe o emolumento
>   select e.id into vidEmolumento
>   from emolumentos e
>   where e.id = id_emolumento;
>
>   -- Se encontrado, localiza a vigência
>   if (videmolumento is not null) then
>   begin
>   select v.id into vidvigencia
> from vigencia v
> where dt_calculo_emol between v.dt_inicial and v.dt_final;
>
> -- Se econtrada a vigência, localiza o emolumento pelo valor
> if (vidvigencia is not null) then
>   select e.id into videmolitens
>   from emolumentos_itens e
>   where valor_documento between e.fx_valor_final and e.fx_valor_final;
> end if;
>
> -- Se foi localizado o emolumento
> if (videmolitens is not null) then
>   select e.id into videmolitens
>   from emolumentos_itens e
>   where e.id_emolumentos  = videmolumento and
> e.id_vigencia = vidvigencia and
> e.fx_valor_inicial = 0 and
> e.fx_valor_final   = 0;
> end if;
>
> if (videmolitens is not null) then
> begin
>   select e.id,
>  e.id_emolumentos,
>  e.fx_valor_inicial,
>  e.fx_valor_final,
>  e.valor_emolumento,
>  e.tx_jud,
>  e.fundesp,
>  e.valor2,
>  e.valor3,
>  e.valor4,
>  e.valor5,
>  e.outras_despesas,
>  e.pag_extra_inicio,
>  e.valor_pag_extra,
>  e.fundo_pag_extra,
>  e.tx_jud_pag_extra,
>  e.cod_tab_correg,
>  e.cod_interno,
>  e.calc_txjud,
>  e.calc_fundesp,
>  e.calc_valor2,
>  e.calc_valor3,
>  e.calc_valor4,
>  e.calc_valor5,
>  e.calc_pagina_extra into regEmolItens
>   from emolumentos_itens e
>   where valor_documento between e.fx_valor_final and e.fx_valor_final;
>
>   return regEmolItens;
> end;
> end if;
>   end;
>   end if;
>
>
> END
> $body$
> LANGUAGE 'plpgsql'
> VOLATILE
> CALLED ON NULL INPUT
> SECURITY INVOKER
> COST 100;
>
> ___
> 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 mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Stored Procedure.

2013-04-26 Thread izaque Maciel
Bem, eu não irei retornar o valor somente de uma variável, mas de todo um
select, no caso o último select da procedure, que há campos varchar e
numerics. A partir do retorno desta procedure atual, criarei outra que
receberá os valores desta. Como que fica, o "SETOF" e "return next" como já
mencionado anteriormente pelo colega Jean?
Obrigado.


Em 25 de abril de 2013 22:52, Danilo Silva escreveu:

> 2013/4/25 izaque Maciel 
>
>> Certo, mas pode me dar um exemplo, de como ficaria isso?
>>
>
> Pessoal cuidado com o top-posting.
>
> Respondendo a pergunta, se você irá retornar apenas o valor de uma
> variável, na assinatura da função utilize apenas "RETURNS numeric", ou
> seja, retire o "SETOF". Mas lembre-se o tipo da variável deve ser do mesmo
> tipo do RETURNS.
>
> []s
> Danilo
>
>>
>>
>> Em 25 de abril de 2013 08:54, Jean Domingues escreveu:
>>
>> Mas vc esta retornando um record onde deveria retornar numeric. E, se for
>>> set of, retorne com return next (varios registros), senao, nao use setof,
>>> use apenas numeric no tipo do retorno.
>>>
>>>   --
>>>  *De:* izaque Maciel 
>>> *Para:* Comunidade PostgreSQL Brasileira <
>>> pgbr-geral@listas.postgresql.org.br>
>>> *Enviadas:* Quinta-feira, 25 de Abril de 2013 8:11
>>> *Assunto:* [pgbr-geral] Stored Procedure.
>>>
>>> Bom dia pessoal, não consegui concluir esta procedure pela questão do
>>> retorno, que tem que me retornar todos os campos do "último select" abaixo,
>>> e com o retorno deste último select, criarei outra stored procedure para
>>> pegar o retorno dessa e trabalharei alguns cálculos. Peço a ajuda de vocês,
>>> obrigado.
>>>
>>>
>>> CREATE OR REPLACE FUNCTION public.retorna_valores_go (
>>>   id_emolumento numeric(12,2),
>>>   dt_calculo_emol date,
>>>   valor_documento numeric(12,2)
>>> )
>>> RETURNS SETOF numeric AS
>>> $body$
>>> DECLARE
>>>
>>>   vidEmolumento numeric(12,2);
>>>   vidVigencia numeric(12,2);
>>>   vidEmolItens numeric(12,2);
>>>   regEmolItens record;
>>> BEGIN
>>>
>>>   -- Verifica se existe o emolumento
>>>   select e.id into vidEmolumento
>>>   from emolumentos e
>>>   where e.id = id_emolumento;
>>>
>>>   -- Se encontrado, localiza a vigência
>>>   if (videmolumento is not null) then
>>>   begin
>>>   select v.id into vidvigencia
>>> from vigencia v
>>> where dt_calculo_emol between v.dt_inicial and v.dt_final;
>>>
>>> -- Se econtrada a vigência, localiza o emolumento pelo valor
>>> if (vidvigencia is not null) then
>>>   select e.id into videmolitens
>>>   from emolumentos_itens e
>>>   where valor_documento between e.fx_valor_final and
>>> e.fx_valor_final;
>>> end if;
>>>
>>> -- Se foi localizado o emolumento
>>> if (videmolitens is not null) then
>>>   select e.id into videmolitens
>>>   from emolumentos_itens e
>>>where e.id_emolumentos  = videmolumento and
>>> e.id_vigencia = vidvigencia and
>>> e.fx_valor_inicial = 0 and
>>> e.fx_valor_final   = 0;
>>> end if;
>>>
>>> if (videmolitens is not null) then
>>> begin
>>>   select e.id,
>>>  e.id_emolumentos,
>>>  e.fx_valor_inicial,
>>>  e.fx_valor_final,
>>>  e.valor_emolumento,
>>>  e.tx_jud,
>>>  e.fundesp,
>>>  e.valor2,
>>>  e.valor3,
>>>  e.valor4,
>>>  e.valor5,
>>>  e.outras_despesas,
>>>  e.pag_extra_inicio,
>>>  e.valor_pag_extra,
>>>  e.fundo_pag_extra,
>>>  e.tx_jud_pag_extra,
>>>  e.cod_tab_correg,
>>>  e.cod_interno,
>>>  e.calc_txjud,
>>>  e.calc_fundesp,
>>>  e.calc_valor2,
>>>  e.calc_valor3,
>>>  e.calc_valor4,
>>>  e.calc_valor5,
>>>  e.calc_pagina_extra into regEmolItens
>>>   from emolumentos_itens e
>>>   where valor_documento between e.fx_valor_final and
>>> e.fx_valor_final;
&

Re: [pgbr-geral] Stored Procedure.

2013-04-26 Thread izaque Maciel
Bom dia Mateus, essa stored procedure posso até melhorar ela, é a primeira
que faço no PostgreSQL, no entanto realmente necessito que seja procedure
no banco de dados, porque há modificações frequentes, no cálculo de
valores, e não dá pra ficar modificando no fonte, e outra coisa é que vou
utilizar esta ai em outras procedures. Está meio confusa mas é só um
esboço, to convertendo de uma pronta no firebird, ai depois verei outras
questões como performance.


Em 26 de abril de 2013 09:05, Marcelo da Silva  escreveu:

> Sobre o TopPost, no IG (email), ele sempre abre a resposta abaixo to
> conteudo, mas ao enviar ele mostra acima.
> Como voces fazem editam o conteudo existente abrindo linhas a cada
> sub-tópico ?
> Qual cliente de email voces usam ?
>
>
> Em 26 de abril de 2013 08:02, izaque Maciel escreveu:
>
> Bem, eu não irei retornar o valor somente de uma variável, mas de todo um
>> select, no caso o último select da procedure, que há campos varchar e
>> numerics. A partir do retorno desta procedure atual, criarei outra que
>> receberá os valores desta. Como que fica, o "SETOF" e "return next" como já
>> mencionado anteriormente pelo colega Jean?
>> Obrigado.
>>
>>
>> Em 25 de abril de 2013 22:52, Danilo Silva 
>> escreveu:
>>
>>> 2013/4/25 izaque Maciel 
>>>
>>>> Certo, mas pode me dar um exemplo, de como ficaria isso?
>>>>
>>>
>>> Pessoal cuidado com o top-posting.
>>>
>>> Respondendo a pergunta, se você irá retornar apenas o valor de uma
>>> variável, na assinatura da função utilize apenas "RETURNS numeric", ou
>>> seja, retire o "SETOF". Mas lembre-se o tipo da variável deve ser do mesmo
>>> tipo do RETURNS.
>>>
>>> []s
>>> Danilo
>>>
>>>>
>>>>
>>>> Em 25 de abril de 2013 08:54, Jean Domingues 
>>>> escreveu:
>>>>
>>>> Mas vc esta retornando um record onde deveria retornar numeric. E, se
>>>>> for set of, retorne com return next (varios registros), senao, nao use
>>>>> setof, use apenas numeric no tipo do retorno.
>>>>>
>>>>>   --
>>>>>  *De:* izaque Maciel 
>>>>> *Para:* Comunidade PostgreSQL Brasileira <
>>>>> pgbr-geral@listas.postgresql.org.br>
>>>>> *Enviadas:* Quinta-feira, 25 de Abril de 2013 8:11
>>>>> *Assunto:* [pgbr-geral] Stored Procedure.
>>>>>
>>>>> Bom dia pessoal, não consegui concluir esta procedure pela questão do
>>>>> retorno, que tem que me retornar todos os campos do "último select" 
>>>>> abaixo,
>>>>> e com o retorno deste último select, criarei outra stored procedure para
>>>>> pegar o retorno dessa e trabalharei alguns cálculos. Peço a ajuda de 
>>>>> vocês,
>>>>> obrigado.
>>>>>
>>>>>
>>>>> CREATE OR REPLACE FUNCTION public.retorna_valores_go (
>>>>>   id_emolumento numeric(12,2),
>>>>>   dt_calculo_emol date,
>>>>>   valor_documento numeric(12,2)
>>>>> )
>>>>> RETURNS SETOF numeric AS
>>>>> $body$
>>>>> DECLARE
>>>>>
>>>>>   vidEmolumento numeric(12,2);
>>>>>   vidVigencia numeric(12,2);
>>>>>   vidEmolItens numeric(12,2);
>>>>>   regEmolItens record;
>>>>> BEGIN
>>>>>
>>>>>   -- Verifica se existe o emolumento
>>>>>   select e.id into vidEmolumento
>>>>>   from emolumentos e
>>>>>   where e.id = id_emolumento;
>>>>>
>>>>>   -- Se encontrado, localiza a vigência
>>>>>   if (videmolumento is not null) then
>>>>>   begin
>>>>>   select v.id into vidvigencia
>>>>> from vigencia v
>>>>> where dt_calculo_emol between v.dt_inicial and v.dt_final;
>>>>>
>>>>> -- Se econtrada a vigência, localiza o emolumento pelo valor
>>>>> if (vidvigencia is not null) then
>>>>>   select e.id into videmolitens
>>>>>   from emolumentos_itens e
>>>>>   where valor_documento between e.fx_valor_final and
>>>>> e.fx_valor_final;
>>>>> end if;
>>>>>
>>>>> -- Se foi localizado o emolumento
>>>>> if (videmolitens is not null) then
>>>>> 

Re: [pgbr-geral] Stored Procedure.

2013-04-26 Thread izaque Maciel
Tudo bem pessoal, como disse anteriormente, é minha primeira stored
procedure no postgresql e é uma conversão do firebird para postgresql, do
jeito que está lá estava convertendo. Se tiverem e poderem, por favor, me
passem uma stored procedure que retorna registros. Obrigado!


Em 26 de abril de 2013 10:22, Osvaldo Kussama
escreveu:

> Em 26/04/13, izaque Maciel escreveu:
> > Bom dia Mateus, essa stored procedure posso até melhorar ela, é a
> primeira
> > que faço no PostgreSQL, no entanto realmente necessito que seja procedure
> > no banco de dados, porque há modificações frequentes, no cálculo de
> > valores, e não dá pra ficar modificando no fonte, e outra coisa é que vou
> > utilizar esta ai em outras procedures. Está meio confusa mas é só um
> > esboço, to convertendo de uma pronta no firebird, ai depois verei outras
> > questões como performance.
> >
>
>
> Mas então, como já foi dito, coloque uma junção dentro de sua stored
> procedure.
> Seu código está extremamente confuso. Pense no SQL como uma linguagem
> declarativa e não uma linguagem procedimental na qual ocê precisa
> ficar fazendo loops dentro de loops.
>
> Osvaldo
> ___
> 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] Stored Procedure.

2013-04-26 Thread izaque Maciel
Ok, obrigado a todos.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Function dentro de outra function.

2013-04-30 Thread izaque Maciel
Boa noite pessoal, tenho uma função X que retorna várias colunas. Estou
tentando utilizar esta função em uma outra função Y. Como posso checar
algumas das colunas da função X,
verificando por exemplo se ela está com o valor 'V' ou 'P' ?

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] Function dentro de outra function.

2013-04-30 Thread izaque Maciel
Vou tentar explicar melhor. A functionX retorna uma linha, com colunas de
tipos variados, e na functionY,
preciso retornar uma linha ou várias linhas, e que nesta functionY, irei
trabalhar os resultados das colunas
na functionX, como por exemplo:
*if* *(valor_documento is not null)  then *
*  valor_documento := 0;*
*end if;*
*
*
Gostaria de saber:
Que tipo de retorno é a functionY? Como pego o retorno da functionX para
que eu possa fazer algumas verificações, como o exemplo acima?

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] Function dentro de outra function.

2013-05-02 Thread izaque Maciel
Matheus, caso o retorno da functionY seja vários campos "numeric" para cada
linha, o return pode ser "numeric" ou deve ser "record"? E se fosse vários
campos, numeric e varchar para cada linha?
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Function dentro de outra function.

2013-05-02 Thread izaque Maciel
ah sim Matheus, bacana, era isso que precisava, muito obrigado a todos!
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Select with lock.

2013-05-06 Thread izaque Maciel
Boa noite pessoal, estou precisando garantir que uma requisição ao banco
seja feita com bloqueio, de modo que nenhuma outra requisição venha a
buscar o mesmo registro.

No Firebird eu faço assim: *SELECT * FROM DOCUMENT WHERE ID=? WITH LOCK*
*
*
Como fica no postgresql?
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Select with lock.

2013-05-06 Thread izaque Maciel
Obrigado Osvaldo, mas precisa ser a nível de bloqueio, de forma que um
outro select não consiga recuperar esta linha bloqueada anteriormente com o
with lock.

A cada select, precisa ser um número exclusivo.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Select with lock.

2013-05-07 Thread izaque Maciel
É o seguinte, é um sistema onde será requisitado a todo momento uma
sequência numérica, e tenho que garantir que dois usuários do sistema não
peguem o mesmo registro, ele deve aguardar que o registro selecionado
anteriormente seja utilizado ou desbloqueado pela seleção anterior, sendo
que, se num select utilizei o registro 7, então o outro usuário que fizer
um select só poderá pegar a 8, ou a 7 se ela já foi desbloqueada e não
utilizada. Utilizarei para um sistema de controle de selo, então, nunca
dois usuários podem utilizar o mesmo selo, um problema de concorrência.
Como expliquei na primeira mensagem, no Firebird fazia com "With lock" e
então o select de outro usuário aguardava o usuário utilizar o registro
selecionado anteriormente ou devolver o registro selecionado. Como abaixo:

SELECT FIRST 1 * FROM DOCUMENT WHERE STATUS = 'N' AND PARENT_ID = 55
FOR UPDATE WITH LOCK
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Select with lock.

2013-05-07 Thread izaque Maciel
Obrigado Marcelo, mais ainda não resolveria o meu problema, porque o
problema da concorrência é a mesma coisa com a Function. Certo ou estou
errado?

E pessoal, caso eu bloqueasse a tabela, não resolveria o meu problema? Ou
isso mesmo que funcione me daria muitos problemas?


Em 7 de maio de 2013 12:04,  escreveu:

> Veja se o conteúdo do anexo é o que você está querendo ou serve como ponto
> de partida.
>
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Select with lock.

2013-05-07 Thread izaque Maciel
Bom Dickson, você me perguntou anteriormente sobre:

*Uma questão importante... essa sua numeração de selos pode haver falhas???
Se não tiver problemas que vc tenha numerações desse tipo: 1, 2, 4, 7, 9,
10, 11, 15... então vc pode usar sequences [1]*

A sequense garante um nº único.
Mas infelizmente não dá pra usar a sequense, seria algo como isso, mas não
é um "incremento", o nº de selo se repete todas as
vezes que adquiro uma nova remessa de uma determinada categoria, a cada
remessa inicia de zero. Não é algo como "eu" gere o próximo número, mas sim
eu cadastro esta numeração na base de dados.

É algo mais ou menos como o Marcelo me enviou em anexo, uma function que
busca o selo e já o atualiza para situação 3, que deve ser como utilizado.
Assim como o Marcelo utiliza, eu imaginei em fazer antes de postar na
lista. Mas a minha dúvida é que se eu utilizar a function, e passar todos
os meus parâmetros para que ela faça todos os inserts e atualizações
necessárias, mesmo assim, não vai haver o problema de concorrência? O meu
problema é somente que 2 ou mais usuários de sessões diferentes não
utilizem um mesmo número, porque ai,
o primeiro que conseguir utilizar o nº (Inserts, updates) tudo certo, mas o
segundo obterá um erro de violação de chaves únicas/primárias no momento
dos inserts e updates.


2013/5/7 Dickson S. Guedes 

> Em Ter, 2013-05-07 às 13:39 -0300, eu escrevi:
> > Você conseguiria exercitar em sua aplicação o uso de sequences e obter
> > este valor usando algo como: nexval('nome_sequence') - 1  ?
>
>
> Oops o correto seria : nextval
>
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Select with lock.

2013-05-07 Thread izaque Maciel
Olá Flávio, era isso que ia perguntar pro Marcelo agora, se mesmo antes do
update do registro encontrado, se outra transação concorrente iria
conseguir ler o mesmo registro. Por favor, me explique melhor sobre o
SELECT .. FOR UPDATE.

Quando você diz "Quando um SELECT... FOR UPDATE falhar, você tenta pegar
outra linha", eu tenho que programar isso dentro de uma *function* ou o
banco fará isso *automaticamente*? Há uma maneira de checar por exemplo na
cláusula Where, que não traga a linha que já está com SELECT FOR UPDATE?


Em 7 de maio de 2013 15:33, Flavio Henrique Araque Gurgel <
fla...@4linux.com.br> escreveu:

> Evite o top-posting.
>
> Em 07-05-2013 15:29, marcelo.me...@yahoo.com.br escreveu:
>
>  Trabalho com o seguinte cenário:  determinada quantidade de selos é
>> encomendada; quando os selos chegam, toda a sequência é gravada em uma
>> tabela no banco de dados.
>> Quando preciso de um selo, utilizo a função no início da montagem para
>> bloquear o selo (estado: 1-disponível 3-utilizado) até que o usuário
>> consiga terminar gravando.
>> Se o usuário desistir, é só dar o RollBack na transação que o selo
>> estará disponível novamente.
>> Se outro usuário precisar utilizar um selo do mesmo tipo, a função
>> retornará com o próximo número disponível.
>>
>
> Utilize SELECT... FOR UPDATE
> Ele foi feito pra isso.
>
> Uma outra transação concorrente vai conseguir "ler", fazer um SELECT
> simples na mesma linha, mas não vai conseguir fazer outro SELECT... FOR
> UPDATE.
>
> Simples assim. Quando um SELECT... FOR UPDATE falhar, você tenta pegar
> outra linha.
>
>
> []s
>
>
> __**
> Flavio Henrique A. Gurgel
> Líder de Projetos Especiais
> Consultoria, Projetos & Treinamentos 4LINUX
> Tel1: +55-11.2125-4747 ou 2125-4748
> www.4linux.com.br
> email: fla...@4linux.com.br
> __
> FREE SOFTWARE SOLUTIONS
> __**_
> 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] Select with lock.

2013-05-07 Thread izaque Maciel
A sim, muito obrigado pessoal, com essas últimas explicações entendi o que
o select for update faz, e melhor de tudo é que existe o NOWAIT, que
ocorrendo, faço o select novamente.
Muito obrigado a todos, que Deus voz abençoe.


Em 7 de maio de 2013 15:47, Fabrízio de Royes Mello  escreveu:

> 2013/5/7 Dickson S. Guedes 
>
>>
>> [...]
>>
>>
>> A grosso modo seria procurar todos os locais que fazem SELECT nesta
>> tabela e altere para utilizar a opção (i) ou (ii). Você precisa fazer
>> isto para qualquer aplicação que utilize esta base. Por fim, você pode
>> criar uma função que encapsula a lógica de forma atômica e re-utilizá-la
>> na(s) aplicação(ões).
>>
>>
> Em tempo, tenho implementada essa solução há muito tempo, pois uso em
> alguns casos:
> - Numeração de Nota Fiscal
> - Numeração de Processo de Protocolo (2013/01, 2013/02, 2014/01)
> - Numeração de Empenhos (item protocolo)
> - etc
>
> A principal caracteristica da solução, diferente da sequence, é que além
> de garantir
> a unicidade (valores não repetidos), também garante a "sequencia sem
> furos" da
> numeração.
>
> Estou melhorando alguns nomes e estrutura e colocando na forma de uma
> extensão e
> pretento publicar ela logo no PGXN [1].
>
>
> Att,
>
>
> [1] http://pgxn.org/
>
>
> --
> 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] Select with lock.

2013-05-08 Thread izaque Maciel
Não dá pra utilizar sequences, porque são categorias infinitas, fica
difícil a manutenção.


Em 8 de maio de 2013 08:15, Jean Domingues  escreveu:

> >Mas infelizmente não dá pra usar a sequense, seria algo como isso, mas
> não é um "incremento", o nº de selo se repete todas as
> >vezes que adquiro uma nova remessa de uma determinada categoria, a cada
> remessa inicia de zero. Não é algo como "eu" gere o próximo número, mas sim
> eu cadastro esta numeração na base de dados.
>
>
> Não daria pra usar sequences pra cada remessa. Por exemplo, aqui na
> empresa, eu controlo a numeração de boletos para cada conta corrente. Então
> eu crio as sequences (sob demanda, via codigo), dessa forma:
> seq_boleto_cc_1
> seq_boleto_cc_2
> seq_boleto_cc_n
> ___
> 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] Linguagem do Verbose do PG_DUMP

2013-05-09 Thread izaque Maciel
Anselmo, não sei como você fez em delphi, mas o código abaixo também é uma
solução.

procedure TFrm_Backup.RunDosInMemo(DosApp:String;AMemo:TMemo) ;
const
ReadBuffer = 2400;
var
Security : TSecurityAttributes;
ReadPipe,WritePipe : THandle;
start : TStartUpInfo;
ProcessInfo : TProcessInformation;
Buffer : Pchar;
BytesRead : DWord;
Apprunning : DWord;
begin
With Security do begin
nlength := SizeOf(TSecurityAttributes) ;
binherithandle := true;
lpsecuritydescriptor := nil;
end;
if Createpipe (ReadPipe, WritePipe,
@Security, 0) then begin
Buffer := AllocMem(ReadBuffer + 1) ;
FillChar(Start,Sizeof(Start),#0) ;
start.cb := SizeOf(start) ;
start.hStdOutput := WritePipe;
start.hStdInput := ReadPipe;
start.dwFlags := STARTF_USESTDHANDLES +
STARTF_USESHOWWINDOW;
start.wShowWindow := SW_HIDE;

if CreateProcess(nil,
PChar(DosApp),
@Security,
@Security,
true,
NORMAL_PRIORITY_CLASS,
nil,
nil,
start,
ProcessInfo)
then
begin
repeat
Apprunning := WaitForSingleObject
(ProcessInfo.hProcess,100) ;
Application.ProcessMessages;
until (Apprunning <> WAIT_TIMEOUT) ;
Repeat
BytesRead := 0;
ReadFile(ReadPipe,Buffer[0],
ReadBuffer,BytesRead,nil) ;
Buffer[BytesRead]:= #0;
OemToAnsi(Buffer,Buffer) ;
AMemo.Text := AMemo.text + String(Buffer) ;
until (BytesRead < ReadBuffer) ;
end;
FreeMem(Buffer) ;
CloseHandle(ProcessInfo.hProcess) ;
CloseHandle(ProcessInfo.hThread) ;
CloseHandle(ReadPipe) ;
CloseHandle(WritePipe) ;
end;
end;


Em 9 de maio de 2013 15:54, Anselmo Silva  escreveu:

>
> Em 9 de maio de 2013 15:37, Matheus de Oliveira  > escreveu:
>
> Pesquise sobre como exportar variáveis de ambiente pelo Delphi (talvez o
>> Execute aceite passar novas variáveis ou alguma outra). Outra alternativa é
>> criar um arquivo batch (.bat)
>
>
> O execute até aceita enviar o comando de SET LC_ALL junto da chamada do
> dump, mas, mesmo assim o verbose retorna em inglês. Não tenho interesse em
> fazer um bat pois teria que mudar a estrutura da implementação, já que
> teria de colocar o password nele, etc... Mesmo assim obrigado pelas 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] Linguagem do Verbose do PG_DUMP

2013-05-09 Thread izaque Maciel
Não abusando da do seu conhecimento, mas quando você falou que usou a
SetEnvironmentVariable, a utilizou assim:

Windows.SetEnvironmentVariable(PChar(VarName),
PChar(VarValue))

???

Em 9 de maio de 2013 13:07, Matheus de Oliveira
escreveu:

>
>
> 2013/5/9 Anselmo Silva 
>
>>
>> Qual é o valor da configuração lc_messages?
>>>
>>> Matheus: Tem a função SetEnvironmentVariable('LC_ALL', 'pt_BR.UTF8');
>> (Não funcionou)
>>
>> Flávio: lc_messages = 'Portuguese_Brazil.1252'
>> (já estava)
>>
>>
>
> Tenta o mesmo valor do lc_messages então:
>
> SetEnvironmentVariable('LC_ALL', 'Portuguese_Brazil.1252');
>
> OBS: Somente o LC_MESSAGES já é suficiente para alterar as mensagens, mas
> pelo que entendi do seu ambiente você quer que tudo possível seja mostrado
> em Português.
>
>
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Linguagem do Verbose do PG_DUMP

2013-05-09 Thread izaque Maciel
Tudo bem, era só pra ver se os "dois" PCHAR, tanto o da variável e do valor
da variável, modificariam o resultado.

>
> SetEnvironmentVariable('PGPASSWORD', Pchar(CONSTANTE_PASSWORD_SECRETA));
>
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Função para substituir caracteres inválidos (genericamente)

2013-05-13 Thread izaque Maciel
Pessoal, há uma extensão do PostgreSQL, que se chama "unaccent", que retira
os acentos.
Há como criar também um varchar personalizado, através de "tipos", já
utilizando esta extensão por padrão, que não
precisa remover os acentos dos registros gravados, mas que no entanto busca
nos "selects" como se não tivessem acentos.

CREATE EXTENSION unaccent;


então, como o exemplo anterior ficaria assim:

update cadastro
set
endereco=unaccent(endereco);

bom dia,
> segue a que eu utilizo, veja se lhe serve:
>
>  CREATE OR REPLACE FUNCTION retira_acentuacao1(p_texto text)
>   RETURNS text AS
>  $BODY$
>  Select translate($1,
>  
> 'áâãäåaaaÁÂÃÄÅAAAèééêëeEEEÉEEìíîïìiiiÌÍÎÏÌIIIóôõöoooÒÓÔÕÖOOOùúûüÙÚÛÜçÇ<>!@#$%¨*()_+={}[]?;:|*~^´`¨æÆø£Øƒªº¿®½¼ßµþýÝ€§¬©¢¥¤ðÐÞÞ¶
> ',  --no final tem tbm o 144 da tabela ascii
>  
> 'áâãaÁÂÃAèééêeeEEEÉEEìíîiìiiiÌÍÎIÌIIIóôõÒÓÔÕùúûuÙÚÛUcC
>  '
>   );
>  $BODY$
>  LANGUAGE sql VOLATILE
>  COST 100;
>
>
> update cadastro
> set
> endereco=retira_acentuacao1(endereco),
>
>
> --
>
> Douglas Fabiano Specht
>
> ___
> 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] Estrutura de dados.

2013-05-14 Thread izaque Maciel
Bom tarde pessoal, gostaria de saber se conhecem alguma ferramenta para
PostgreSQL gratuita, que compara uma estrutura de um banco com o outro,
resultando em um script para executar em uma das bases comparadas?
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Estrutura de dados.

2013-05-14 Thread izaque Maciel
Muito obrigado a todos, vou utilizar esta ferramenta.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Biometria.

2013-05-15 Thread izaque Maciel
Boa tarde pessoal, irei iniciar um sistema, onde utilizará biometria.
Na opinião de vocês, mesmo com um banco de boa performance como
o PostgreSQL, as digitais gravadas em uma pasta seria a melhor escolha?
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Biometria.

2013-05-15 Thread izaque Maciel
Me desculpe, mas a que conheço, de sistemas já implementados anteriormente,
grava as "imagens" numa pasta ou na base de dados. Por isso a pergunta, mas
já que você mencionou, irei pesquisar sobre isso. Muito obrigado.

Até onde sei, biometria da digital gera apenas uma string texto (menor que
> 400 bytes). Não vejo porque não salvar no banco de dados.
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Biometria.

2013-05-15 Thread izaque Maciel
E desconsiderando a biometria, também irei trabalhar com digitalização de
imagens.
A performance cai bastante se guardado na base de dados?
Já pensei na possibilidade de guardar arquivos na base de dados, mas
somente pelas
questões mencionadas abaixo, pois ao meu ver, o gerenciamento de arquivo
pelo
sistema operacional é melhor. Além das vantagens abaixo, há alguma a mais a
ser
considerada?



> Já mexi com sistema que guardava a imagem no PostgreSQL sem problemas.
>
> Eu sempre recomendo colocar arquivos (inclusive imagens) para:
> 1) Manter o ACID (transacionalidade)
> 2) Backup só do banco é backup de tudo
> 3) Ter uma porta só aberta para o banco, e não precisar de
> compartilhamento de arquivos (SMB, NFS, FTP, etc) e mais portas abertas,
> aumentando a complexidade do serviço.
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Biometria.

2013-05-16 Thread izaque Maciel
Ok, pessoal, irei pesar as opções, e escolher as melhores.
Obrigado a todos.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Armazenar ou não imagens

2013-05-29 Thread izaque Maciel
Bruno, irei te responder com a resposta do Euler Taveira, relacionado a
guardar imagens no banco. Mesmo com a resposta abaixo, eu optaria por
guardar no banco se cada uma das imagens não for grande. A palestra
mencionado abaixo do "Diogo", em
http://www.slideshare.net/diogobiazus/arquivos-no-banco, é de muita ajuda.

Resposta do Euler:

Se você ler a palestra do Diogo [1] verá que a resposta a sua pergunta
é: depende. O Flavio citou algumas vantagens mas esqueceu de informar as
desvantagens (vide [1]). Há pessoas que utilizam uma solução mista
(banco de dados e sistema de arquivos) -- utilizando um sistema de cache
no SO para acelerar o acesso aos dados.

O que deve ser avaliado:

(i) haverá histórico das imagens?
(ii) o sistema utilizado é web?
(iii) a imagem é uma das colunas da tabela que contém vários outros
dados? Ou é uma tabela somente com a imagem?
(iv) qual é o tamanho médio das imagens?
(v) qual é o padrão de leitura/escrita na tabela que contém a imagem?
Por exemplo, 1 escrita p/ 10³ leituras, somente leitura, etc.
(vi) haverá um esquema rígido de segurança das imagens?
(vii) quantos registros são esperados para tabela em questão?

É fato que:

* imagens no banco facilitam o controle de acesso;
* acesso é mais lento no banco de dados;
* carga é maior no banco de dados;
* cópia de segurança só exige uma estratégia;
* toda alteração de dados e imagem é transacional;
* é necessário mais código para ler e armazenar imagens no banco de dados.

Futuramente, o PostgreSQL terá o tipo DATALINK [2] que alia o melhor dos
dois mundos.

Aconselho dar uma olhada em outras fontes [3][4] para tirar as suas
conclusões.

[1]
http://wiki.postgresql.org.br/Palestras_do_PGCon_Brasil_2007?action=AttachFile&do=get&target=arquivos_no_banco.pdf
[2] http://wiki.postgresql.org/wiki/DATALINK
[3] http://stackoverflow.com/questions/54500/storing-images-in-postgresql
[4] http://stackoverflow.com/questions/3748/storing-images-in-db-yea-or-nay
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] [off topic] PgDAC

2013-07-11 Thread izaque Maciel
Talvez, mesmo que dê mais trabalho, uma opção poderia ser o DBExpress, com
o Drive da Devart.


Em 11 de julho de 2013 11:53, Carlos Antônio Pereira (VidaUTI) <
carlosanto...@utivida.com.br> escreveu:

>   *From:* Douglas Fabiano Specht 
>  *Sent:* Thursday, July 11, 2013 8:30 AM
> *To:* Comunidade PostgreSQL Brasileira
> *Subject:* Re: [pgbr-geral] [off topic] PgDAC
>
>
>
>
> Em 11 de julho de 2013 00:19, Carlos Antônio Pereira (VidaUTI) <
> carlosanto...@utivida.com.br> escreveu:
>
>>   Boa noite, senhores.
>>
>>  Estou fazendo a migração de um sistema
>> de Delphi 5 para Delphi 6
>>  e mudando os componentes de conexão TQuery para TPgQuery
>>
>> que faz parte do componente PgDAC da Devart.
>>
>>  Os componentes PgDAC acabam com a camada BDE e ODBC.
>>  Sendo assim, deveria apresentar perfomance bem melhor já
>>  que serão duas camadas a menos para acessar os dados
>> .
>>
>>  O problema é que essa conexão PgDAC que deveria ser muito mais
>>  rápida está muito mais lenta.  Como estes componentes PgDAC
>>  tem muitas propriedades, imagino que isso seja alguma configuração.
>>
>>  Estou mudando o servidor também. Essa nova configuração está sendo
>>  montanda em um PowerEdge T320 com 16 Gb de RAM e HDs SAS de
>>  600 gb RAID 1,  com o PostgreSQL 9.2.
>>
>>  Alguém que usa esse componente pode me ajudar?
>>
>>  Att Carlos
>>
>>
>>
>>
>> ___
>> pgbr-geral mailing list
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
> Bom dia Carlos,
>
> fizemos isso no ano passado em nossa aplicação, mas devido a estrutura de
> nossa aplicação e banco, não ganhamos muito em performance.
> Ganhamos sim em independência de Plataforma, de banco e na facil
> manutenção.
> por acaso vcs nao deixaram o monitor de captura de comandos sql sempre
> ativo?
>
>
> --
>
> Douglas Fabiano Specht
>
> --
>
> Bom dia, Douglas. Antes de tudo agradeço sua resposta.
> Então, como os compontes PgDAC são vastos em propriedades,
> ainda não me aprofundei em tudo.
>
>  Eu já tinha feito um teste com os componentes Zeos mas como
> este já não é atualizado há bastante tempo, resolvi investir no
> PgDAC que está em constante evolução.
>
> Também bolei uma forma bem prática de substituir os componentes
> através da edição do arquivo .dfm e com Replace fazer a troca das classes,
> o que aumenta minha produtividade na conversão.
>
> Os componentes TQuery (BDE) foram migrados para TPgQuery e TPgSQL.
> Não consegui rodar comandos em bloco pelo TPgQuery.
> Assim, Alguns scripts são rodados em TPgSQL que permite essa execução
> de blocos de comandos SQL.
>
> O PgQuery e PgSQL estão com as configurações padrão do componte e algumas
> consultas fazem update insert e delete, mas a maioria apenas select.
>
> No Módulo da Central de Operações tem umas 300 querys e é onde dá
> para se notar que o PgDAC diminuiu muito a performance em relação aos
> componentes BDE.
>
> Esse monitor de captura de comandos é habilitado na PgQuery?
>
>
> ___
> 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] Expressão Regular para CNPJ e CPF via SQL

2013-07-15 Thread izaque Maciel
Pode fazer com alguma das funções contidas no link abaixo:

http://www.postgresql.org/docs/8.4/interactive/functions-formatting.html


Em 15 de julho de 2013 14:49, Giovani Rodrigues escreveu:

> Por favor, como você faria sem expressões regulares?
>
>
> Em 15 de julho de 2013 14:40, Itamar Reis Peixoto  > escreveu:
>
> On 07/15/2013 02:25 PM, Giovani Rodrigues wrote:
>>
>>> Boa tarde pessoal.
>>>
>>> Existe a possibilidade no postgres de formatar um campo cnpj ou cpf
>>> direto na consulta com expressão regulares?
>>>
>>> Eu armazeno somente números na tabela para esses campos.
>>>
>>> --
>>> Giovani Rodrigues
>>>
>>>  não sei com expressões regulares, mas dá pra fazer sim.
>>
>> __**_
>> pgbr-geral mailing list
>> pgbr-geral@listas.postgresql.**org.br
>> https://listas.postgresql.org.**br/cgi-bin/mailman/listinfo/**pgbr-geral
>>
>
>
>
> --
> Giovani Rodrigues
>
> ___
> 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] Expressão Regular para CNPJ e CPF via SQL

2013-07-15 Thread izaque Maciel
Você pode utilizar o Case do SQL para verificar se é cpf ou cnpj de acordo
com o tamanho da string


Em 15 de julho de 2013 15:02, izaque Maciel escreveu:

> Pode fazer com alguma das funções contidas no link abaixo:
>
> http://www.postgresql.org/docs/8.4/interactive/functions-formatting.html
>
>
> Em 15 de julho de 2013 14:49, Giovani Rodrigues 
> escreveu:
>
> Por favor, como você faria sem expressões regulares?
>>
>>
>> Em 15 de julho de 2013 14:40, Itamar Reis Peixoto <
>> ita...@ispbrasil.com.br> escreveu:
>>
>> On 07/15/2013 02:25 PM, Giovani Rodrigues wrote:
>>>
>>>> Boa tarde pessoal.
>>>>
>>>> Existe a possibilidade no postgres de formatar um campo cnpj ou cpf
>>>> direto na consulta com expressão regulares?
>>>>
>>>> Eu armazeno somente números na tabela para esses campos.
>>>>
>>>> --
>>>> Giovani Rodrigues
>>>>
>>>>  não sei com expressões regulares, mas dá pra fazer sim.
>>>
>>> __**_
>>> pgbr-geral mailing list
>>> pgbr-geral@listas.postgresql.**org.br
>>> https://listas.postgresql.org.**br/cgi-bin/mailman/listinfo/**pgbr-geral<https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral>
>>>
>>
>>
>>
>> --
>> Giovani Rodrigues
>>
>> ___
>> 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] erro de read-only no servidor

2013-11-11 Thread Izaque Maciel
Douglas, se não me engano, este erro ocorre quando você tenta utilizar um
componente unidirecional, por exemplo o TSQLDataSet. Tente utilizar o
TSimpleDataSet, TSQLQuery, ou mesmo o TSQLDataSet em conjunto com o
DataSetProvider e ClientDataSet, se caso você esteja utilizando o *delphi.*


Em 11 de novembro de 2013 15:42, Douglas Fabiano Specht <
douglasfabi...@gmail.com> escreveu:

> Pessoal,
> temos 2 servidores centOS 6.4 com postgres 9.2.1, 1 no setor de
> desenvolvimento e outro no setor de testes.
> de uma hora para outra qualquer objeto novo criado no servidor de
> desenvolvimento, retorna uma mensagem de erro: cannot modify a read-only
> dataset na nossa aplicação.
> esse erro so acontece em um banco novo, se pegar um antigo o mesma
> funciona, e se fizer um dump e restore dele, também ocorre o problema.
> Gostaria de saber se alguém ja passou por alguma situação semelhante.
> Utilizamos o driver UNIDAC da devart.
>
>
> --
>
> Douglas Fabiano Specht
>
> ___
> 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] Driver DBExpress

2016-02-29 Thread Izaque Maciel
Em 29 de fevereiro de 2016 15:20, Edinelson  escreveu:

> Olá,
>
> Sou novato em PostgreSQL e estou fazendo testes para migrar uma aplicação
> que tenho em PervasiveSQL para PostgreSQL, ela esta desenvolvida em Delphi
> 2005 com acesso via DBExpress estou tentando mudar o mínimo possível na
> aplicação por isso estou tentando utilizar driver DBExpress para
> PostgreSQL, pelo que pesquisei encontrei 2 drives até momento um pago que é
> da Devart e outro free que é DbxOpenODBC, alguém tem alguma sugestão ou que
> vocês indicariam?
>
> Grato
>
> Edinelson
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



Eu utilizo Firedac, e a Embarcadero disponibiliza uma ferramenta de
conversão de DBExpress para Firedac. O Firedac é nativo da IDE a partir do
XE4 e é recomendado pela Embarcadero para inciar com novos projetos, e é
também um tanto mais rápido que DBExpress.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Driver DBExpress

2016-02-29 Thread Izaque Maciel
Em 29 de fevereiro de 2016 15:20, Edinelson  escreveu:

> Olá,
>
> Sou novato em PostgreSQL e estou fazendo testes para migrar uma aplicação
> que tenho em PervasiveSQL para PostgreSQL, ela esta desenvolvida em Delphi
> 2005 com acesso via DBExpress estou tentando mudar o mínimo possível na
> aplicação por isso estou tentando utilizar driver DBExpress para
> PostgreSQL, pelo que pesquisei encontrei 2 drives até momento um pago que é
> da Devart e outro free que é DbxOpenODBC, alguém tem alguma sugestão ou que
> vocês indicariam?
>
> Grato
>
> Edinelson
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



Segue o link de como realizar a migração:
http://docwiki.embarcadero.com/RADStudio/XE8/en/DbExpress_Application_Migration_(FireDAC)
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Driver DBExpress

2016-03-01 Thread Izaque Maciel
Em 1 de março de 2016 08:44, Edinelson  escreveu:

> Obrigado pela informações, porem a mudança no momento seria muito grande e
> pretendo mudar aos poucos e o primeiro passo seria mudar somente a base de
> dados e em 2o passo mudar Delphi para versão mais nova onde poderia mudar
> forma acesso.
>
> Grato
>
>
> "Izaque Maciel"  escreveu na notícia da
> mensagem:CAN0G60pWeEf=b-KHYdNxNOQO6cXh=5aFCUMWDWqvLMLCBk=s...@mail.gmail.com.
> ..
>
> Em 29 de fevereiro de 2016 15:20, Edinelson 
> escreveu:
>
>> Olá,
>>
>> Sou novato em PostgreSQL e estou fazendo testes para migrar uma aplicação
>> que tenho em PervasiveSQL para PostgreSQL, ela esta desenvolvida em Delphi
>> 2005 com acesso via DBExpress estou tentando mudar o mínimo possível na
>> aplicação por isso estou tentando utilizar driver DBExpress para
>> PostgreSQL, pelo que pesquisei encontrei 2 drives até momento um pago que é
>> da Devart e outro free que é DbxOpenODBC, alguém tem alguma sugestão ou que
>> vocês indicariam?
>>
>> Grato
>>
>> Edinelson
>>
>> ___
>> pgbr-geral mailing list
>> pgbr-geral-b/urxocn8+hxqfz5go68majmpyqws...@public.gmane.org
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
>
> Segue o link de como realizar a migração:
> http://docwiki.embarcadero.com/RADStudio/XE8/en/DbExpress_Application_Migration_(FireDAC)
>
> --
> ___
> 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


Tudo bem, mas só uma opinião. Se você vai mudar, mude para Firedac, os
ganhos são imensos. Há uma versão do Firedac para funcionar apartir do delphi
7, ainda em estado AnyDac, que foi de quando a Embarcadero adquiriu, mas
não havia mudado toda a estrutura interna dos nomes dos componentes. Você
pode utilizar esta versão que roda a partir do delphi 7 e posteriormente
utilizar o conversor de AnyDac para Firedac.
Só uma opnião minha, eu também utilizava esse drive DBExpress da Devart.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] VELOCIDADE DE ACESSO REMOTO AO POSTGRESQL

2016-03-05 Thread Izaque Maciel
Em 5 de março de 2016 16:10, Ali do Amaral Pedrozo 
escreveu:

> Olá!
>
>
> Sou iniciante no Postgres! Tenho uma aplicação em SQL SERVER 2014 EXPRESS
> desenvolvida em Delphi XE 8 e estou migrando para o Postgres 9.4.
>
> No ambiente de testes funciona tudo perfeitamente, porém, quando eu me
> conecto em um Postgres remoto (instalado em um Debian 8 ), a conexão, e a
> recuperação de dados é lenta.
>
> Informações gerais do ambiente remoto:
> - Servidor: Debian 8
> - Banco: Postgres 9.4 + postgis
> - Banda: 4MB ADSL
> - pg_hba.conf (acrescentei apenas essa linha para acesso remoto)
>
> hostall all 177.42.58.148/32md5
>
> - postgres.conf (alterei somente esta linha para acessar remoto)
> listen_addresses = '*'
>
>
> Informações gerais do ambiente onde está minha aplicação em Delphi:
> - Windows 8.1
> - Banda 15 MB ADSL
>
> Alguns testes que eu já fiz:
> 1) no pgadmin, se eu faço select * from compra (tenho 18 campos) com a
> tabela zerada, ele apresenta 301 ms, porém, demora 21s para exibir a
> informação
> 2) via psql no windows,
> psql -h xxx.xxx.xxx.xxx -U postgres (demora 2 s)
> \connect database (demora 2s)
> select * from compra; (instantaneo)
> 3) via delphi, conectando via firedac (demora 5s)
> 4) via delphi, quando eu faço tfdquery.open (demora 5s)
>
> Estou desconfiado que a lentidão vem do componente que estou usando no
> delphi, o Firedac.
> Alguem já teve este problema ?
>
> Agradeço desde já!
>
>
> --
>
> *---  Ali do Amaral Pedrozo *
> *  ali@gmail.com *
>
>
> *---*
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>


Firedac é bem rápido. Utilize select campo1, campo2, ... from compra, e se
como mencionado por alguns colegas, se tiver a opção de utilizar JSON, o
delphi suporta JSON e BSON (Binary JSON), através do Firedac.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Migrando Postgresql que versão usar ?

2016-04-13 Thread Izaque Maciel
Em 13 de abril de 2016 12:55, Guimarães Faria Corcete DUTRA, Leandro <
l...@dutras.org> escreveu:

> 2016-04-13 9:52 GMT-03:00 Raphael Coutinho  >:
> >
> >> >Eu optaria pela versão 9.4.
> >>
> >> Por quê?
> >
> > Sempre fico meio pé atrás com últimas versões.
>
> Não generalize, por favor.  O PostgreSQL tem uma qualidade tanto de
> base de código quanto de processo de atualização inigualável.
>
> E leve em conta o processo.  Α 9.5 não foi lançada hoje de manhã, já
> está sendo amplamente usada e não tem defeitos graves conhecidos, ao
> contrário da concorrência.  A transparência no tratamento de defeitos
> também é total.  E o consulente está planejando uma migração; até ela
> ir para produção, certamente a segurança com a 9.5 já estará ainda
> mais estabelecida do que já está, e que já é suficiente para qualquer
> aplicativo Delphi que eu consiga imaginar.
>
>
> --
> skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
> +55 (61) 3546 7191  gTalk: xmpp:leand...@jabber.org
> +55 (61) 9302 2691ICQ/AIM: aim:GoIM?screenname=61287803
> BRAZIL GMT−3  MSN: msnim:chat?contact=lean...@dutra.fastmail.fm
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>


Utilizo a versão 9.5 com a última versão do delphi, Delphi Seattle Update
1, e não há nenhuma avaria por parte do PostgreSQL.
PostgreSQL é só alegria.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Ferramentas de Administração do PostgreSQL

2016-07-26 Thread Izaque Maciel
Ems for PostgreSQL Lite Free.
Em 26/07/2016 10:32, "Gustavo"  escreveu:

> Ola Senhores e Senhoras
>
> Iniciado no PostgreSQL recentemente gostaria de saber que ferramentas
> estão utilizando para gerenciar o Banco  alem do pgAdminIII ??
>
> Obrigado pela ajuda !!!
> ᐧ
>
> ___
> 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] Função com generate_series

2016-10-18 Thread Izaque Maciel
Boa tarde pessoal,

se possível, por favor me auxiliem nesta função:

CREATE OR REPLACE FUNCTION public.tarefa_agendada_ai (
)
RETURNS trigger AS
$body$
DECLARE
  rec record;
BEGIN
  FOR rec IN
select date
from generate_series(new.dtinicial::timestamp,
  new.dtfinal, '1 day') date
where extract(dow from date) not in (0,6)
  LOOP
INSERT INTO tarefa_itens (id, id_tarefaag, data_horafin,
 data_horaexec, executada)
VALUES ((select coalesce((max(ti.id) + 1), 1)
chave from tarefa_itens ti),
  new.id,
  null,
rec.date   -- Aqui
  'N');

  END LOOP;
  return new;
END;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100;


Estou tentando um insert que pega os valores do novo registro da tabela
tarefa (After Insert) e gera os valores da tabela tarefa_itens. Com a
função generate_series dentro do for loop armazeno num tipo Record, mas no
momento da execução recebo um erro de que o schema rec não existe. O que
estou fazendo de errado?

ERROR:  schema "rec" does not exist
LINE 7: rec.date
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Função com generate_series

2016-10-18 Thread Izaque Maciel
>
> Você está misturando um tipo (date) com nome de uma variável [1]. Isso
> está confundindo o parser. Ou você usa um outro nome para variável no
> record ou ajusta o parâmetro de configuração plpgsql.variable_conflict
> (eu prefiro a primeira opção).
>
> Apesar de "date" não ser uma palavra reservada no postgres [2], ela é
> reservada no padrão SQL. Evite um nome de coluna com essa palavra-chave.
>
>
> [1]
> https://www.postgresql.org/docs/9.6/static/plpgsql-
> implementation.html#PLPGSQL-VAR-SUBST
> [2] https://www.postgresql.org/docs/9.6/static/sql-keywords-appendix.html
>
>
> --
>Euler Taveira   Timbira - http://www.timbira.com.br/
>PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
>
>
Ok Euler, vou verificar, obrigado pela ajuda.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Função com generate_series

2016-10-19 Thread Izaque Maciel
>
> Além do que o Euler já comentou, eu tenho mais duas recomendações.
>
> 1. Essa é bem grave, usar `select coalesce(max(id)+1),1) ...` é uma
> prática comum, mas pode ter consequências indesejáveis devido à problemas
> de concorrência. Interessante que comentei sobre isso esses dia no último
> PGDay Campinas [1]. Caso duas sessões tentem executar esse código ao mesmo
> tempo, ambas vão recuperar o mesmo ID, tentando assim inserir o mesmo
> valor. A solução nesse caso é simplesmente usar uma SEQUENCE, para isso
> basta definir a coluna ID como SERIAL ou BIGSERIAL e simplesmente não usar
> essa coluna no INSERT, deixando o PostgreSQL gerar o ID automaticamente (ou
> então use DEFAULT ou nextval explícito).
>
> 2. Essa não é um problema, é mais uma pequena otimização. Eu também não
> usaria LOOP, simplesmente faria INSERT ... SELECT.
>
> O resultado seria mais ou menos assim:
>
> INSERT INTO tarefa_itens (
> id_tarefaag, data_horafin, data_horaexec, executada
> )
> SELECT
> NEW.id, null, g.dt, 'N'
> FROM
> generate_series(new.dtinicial::timestamp, new.dtfinal, '1 day')
> AS g(dt)
> WHERE
> EXTRACT(DOW FROM g.dt) NOT IN (0,6);
>
> Se quiser fazer o equivalente ao SERIAL na coluna que já existe, basta
> executar:
>
> BEGIN;
> CREATE SEQUENCE tarefa_itens_id_seq;
> ALTER TABLE tarefa_itens ALTER id SET DEFAULT
> nextval('tarefa_itens_id_seq');
> ALTER SEQUENCE tarefa_itens_id_seq OWNED BY tarefa_itens.id;
> SELECT setval('tarefa_itens_id_seq', max(id)) FROM tarefa_itens;
> COMMIT;
>
> [1] http://www.slideshare.net/matheus_de_oliveira/o-que-voc-
> acha-que-sabe-sobre-banco-de-dados
>
> Atenciosamente,
> --
> Matheus de Oliveira
>
>
>
Obrigado Mateus, farei os ajustes. Só mais uma dúvida, utilizando a
sequence mencionada acima ou o nextval explícito, nunca ocorrerá problemas
de concorrência?
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Função com generate_series

2016-10-19 Thread Izaque Maciel
Que ótimo, resolve alguns problemas, estudei um pouco sobre as sequences, e
encontrei também uma maneira de atualizá-las, em alguns casos de rollback.
Muito obrigado pessoal!

Em 19 de outubro de 2016 09:17, Matheus de Oliveira <
matioli.math...@gmail.com> escreveu:

>
> 2016-10-19 8:45 GMT-02:00 Izaque Maciel :
>
>> Obrigado Mateus, farei os ajustes. Só mais uma dúvida, utilizando a
>> sequence mencionada acima ou o nextval explícito, nunca ocorrerá problemas
>> de concorrência?
>
>
> Não, porque o PostgreSQL garante que apenas uma sessão recupere o mesmo
> valor na sequence.
>
> Um efeito causado pela sequence, entretanto, é que em caso de ROLLBACK da
> transação o valor da sequence não volta, podendo deixar buracos na
> sequência. O que em geral não é um problema, porque o que sequence garante
> é só a geração de valores únicos.
>
> Atenciosamente,
> --
> Matheus de Oliveira
>
>
>
> ___
> 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] Função com generate_series

2016-10-19 Thread Izaque Maciel
Em 19 de outubro de 2016 09:58, Matheus de Oliveira <
matioli.math...@gmail.com> escreveu:

>
> 2016-10-19 9:41 GMT-02:00 Izaque Maciel :
>
>> encontrei também uma maneira de atualizá-las, em alguns casos de rollback.
>
>
> Essa afirmação me deixa um tanto preocupado, você não está falando de
> executar um SETVAL após um ROLLBACK, né?
>
>
> --
> Matheus de Oliveira
>
>
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>


Não é isso, é porque um sistema antigo que dei manutenção era muito
complicado tratar os "ids",
tinha que dar lock na tabela em questão para tentar garantir que o valor do
id fosse o único, utilizando o max(id) + 1,
e este id é utilizado como numeração de controle pelos usuários do sistema.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Função com generate_series

2016-10-19 Thread Izaque Maciel
Em 19 de outubro de 2016 10:52, Guimarães Faria Corcete DUTRA, Leandro <
l...@dutras.org> escreveu:

> Não foi o que você perguntou, mas alertando para um problema potencial:
>
>
> Essa tabela tem chave natural, ou só artificial?  Porque a artificial
> não garante unicidade, e se for só ela dará problema mais cedo ou mais
> tarde.
>
>
> --
> skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
> +55 (61) 3546 7191  gTalk: xmpp:leand...@jabber.org
> +55 (61) 9302 2691ICQ/AIM: aim:GoIM?screenname=61287803
> BRAZIL GMT−3  MSN: msnim:chat?contact=lean...@dutra.fastmail.fm
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>

Chave artificial.
É somente uma identificação de número controle interno, não é como um cpf
ou rg.
Não entendo bem, mas garantindo a unicidade do campo em questão, no caso o
"id", já resolve. Obrigado por alertarem.
Passarei a utilizar sempre o sequence, já que ele garante que mais de uma
sessão não utilize o mesmo número.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Perder Dados

2017-02-06 Thread Izaque Maciel
Ainda não disse qual é a versão do banco de dados.
Qual a linguagem que está utilizando? Há alguma Trigger para a tabela em
questão?

Em 6 de fevereiro de 2017 16:02, Forsell - Erlon 
escreveu:

>
>
> Em 06/02/2017 15:55, Sebastian Webber escreveu:
>
>
>
> Em 6 de fevereiro de 2017 15:10, Forsell - Erlon 
> escreveu:
>
>>
>> Em 06/02/2017 15:04, Ivo Sestren Junior escreveu:
>>
>> Não pode ser problema de transação?
>> Seu software ainda não fez o commit ou por algum motivo o mesmo executou
>> o rollback?
>>
>> >> Já perdemos dados mesmo sem ter transação, e chegou a imprimir o
>> danfe, ou seja, por algum momento a informação estava no banco de dados.
>> E mesmo em casos sem transação, por questão de segundos a informação
>> estava no banco de dados, a hora que reinicia o sistema ou fecha a tela e
>> volta a informação já não está mais lá.
>>
>
> Qual são os detalhes do ambiente? o que há nos logs do banco? como você
> pode simular o problema?
>
> >> Só sabemos que os dados estavam lá, porque temos uma tabela de log
> nosso, nessa tabela indica a criação da nota daquele número
> o cliente possui o pdf do danfe impresso e enviado via email ao
> cliente - danfe gerado com os dados da base de dados.
> fechou a tela de emissão de nota, a informação deixou de estar gravada
> no banco de dados
>em ambas situações, com transação (devidamente concluida) e retirado
> transação feito por comando normal.
>
>
>
>
>> acontece 1 vez ao mes em um cliente no máximo
>>
> e agora começou a acontecer em outro cliente, em outro sistema onde a
>> movimentação é muito maior está mais frequente, 1 ou 2x na semana,
>> do que já identificamos, de sumir registros.
>>
>
> Volto a perguntar: qual é a versão que você utiliza?
>
> --
> Sebastian Webber
> http://swebber.me
>
>
> ___
> pgbr-geral mailing 
> listpgbr-ge...@listas.postgresql.org.brhttps://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 mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

[pgbr-geral] Importação CSV

2018-01-09 Thread Izaque Maciel
Pessoal, bom dia!

Há alguma maneira nativa no PostgreSQL, de importar o csv ignorando uma
certa quantidade de linhas?
Não tem haver com duplicidade de registros, mas sim porque o csv que
obtenho do iTunes Connect, vem com um cabeçalho não muito normal, como
segue abaixo:

Nome,CTPS Digital
Data de início,28/09/17
Data final,26/12/17

Data,Instalações,Falhas
28/09/17,0.0,0.0
29/09/17,0.0,0.0
30/09/17,0.0,0.0
01/10/17,0.0,0.0
02/10/17,0.0,0.0
03/10/17,0.0,0.0
04/10/17,0.0,0.0
05/10/17,0.0,0.0

pelo copy só há como informar HEADER para que seja ignorada somente a
primeira linha, que neste caso não é o cabeçalho, que só está na quinta
linha.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Importação CSV

2018-01-10 Thread Izaque Maciel
Ok, obrigado Ricardo.

Em 9 de janeiro de 2018 09:33, Ricardo Campos Passanezi <
ri...@ige.unicamp.br> escreveu:

> On Tue, Jan 09, 2018 at 09:23:45AM -0200, Izaque Maciel wrote:
> > Pessoal, bom dia!
> >
> > Há alguma maneira nativa no PostgreSQL, de importar o csv ignorando uma
> > certa quantidade de linhas?
> > Não tem haver com duplicidade de registros, mas sim porque o csv que
> > obtenho do iTunes Connect, vem com um cabeçalho não muito normal, como
> > segue abaixo:
> >
> > Nome,CTPS Digital
> > Data de início,28/09/17
> > Data final,26/12/17
> >
> > Data,Instalações,Falhas
> > 28/09/17,0.0,0.0
> > 29/09/17,0.0,0.0
> > 30/09/17,0.0,0.0
> > 01/10/17,0.0,0.0
> > 02/10/17,0.0,0.0
> > 03/10/17,0.0,0.0
> > 04/10/17,0.0,0.0
> > 05/10/17,0.0,0.0
> >
> > pelo copy só há como informar HEADER para que seja ignorada somente a
> > primeira linha, que neste caso não é o cabeçalho, que só está na quinta
> > linha.
>
> Se for unix, poderia usar um "grep -E -v '(Data|Nome|^$)'" e importar a
> saída disso.
>
> Claro, se o arquivo vier sempre com esses cabeçalhos fixos.
>
> Mas você poderia ajustar a expressão do grep de acordo com sua
> necessidade.
>
> E, evidente, se houver uma alternativa direto no banco e alguém
> conhecer, melhor.
>
> > ___
> > pgbr-geral mailing list
> > pgbr-geral@listas.postgresql.org.br
> > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
> --
> Ricardo Campos Passanezi - Diretor de TIC
> Instituto de Geociências - http://portal.ige.unicamp.br - UNICAMP
> Tel: +55 19 3521-4560
> ___
> 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