Re: [pgbr-geral] Armazenar arquivo XML

2009-12-18 Por tôpico Fabrízio de Royes Mello
2009/12/17 Rodrigo Justina rodrigodellajust...@gmail.com

 Olá Antônio,

 Em alguns bancos de dados como Oracle existe o tipo de XML mesmo, até o
 momento na versão 8.3
 a qual está em produção também com o nosso sistema não existe um tipo xml,
 a nossa solução para a nota fiscal eletrônica - NF-e
 foi armazenar também em uma tabela juntamente com sua chave o XML em uma
 coluna TEXT até por motivos de backup e exigência do Fisco
 se eu não me engano é por 5 anos a permanência desses arquivos.


No 8.3 existe sim um tipo XML... veja o seguinte no release notes da 8.3
[1]

Support for the SQL/XML standard, including new operators and an XML data
type

Mais informações sobre o tipo XML podem ser verificadas em [2].


[1] http://www.postgresql.org/docs/8.3/static/release-8-3.html
[2] http://www.postgresql.org/docs/8.3/interactive/datatype-xml.html

-- 
Fabrízio de Royes Mello
 Blog sobre TI: http://fabriziomello.blogspot.com
___
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 arquivo XML

2009-12-18 Por tôpico Antonio Prado
Em Qui, 2009-12-17 às 17:13 -0200, Antonio Prado escreveu:
 Estou trabalhando com NFe e gostaria de armazenar os arquivos xml em uma
 base de dados PostgreSQL 7.4.
 
 Para isto, qual deve ser o tipo do registro? Text?
 
 Alguma dica de qual seria a melhor forma de proceder?

Estarei armazenando em registro do tipo text, que é o recurso que a
versão 7.4 me disponibiliza.

Obrigado a todos pela colaboração.


Antonio.


___
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 arquivo XML

2009-12-18 Por tôpico Osvaldo Kussama
2009/12/18 Antonio Prado supo...@antonioprado.eti.br:
 Em Qui, 2009-12-17 às 17:13 -0200, Antonio Prado escreveu:
 Estou trabalhando com NFe e gostaria de armazenar os arquivos xml em uma
 base de dados PostgreSQL 7.4.

 Para isto, qual deve ser o tipo do registro? Text?

 Alguma dica de qual seria a melhor forma de proceder?

 Estarei armazenando em registro do tipo text, que é o recurso que a
 versão 7.4 me disponibiliza.



Por que utilizar uma versão tão antiga (mais de 6 anos) e que terá
suporte apenas até Jul/2010 [1]?

Osvaldo

[1] http://wiki.postgresql.org/wiki/PostgreSQL_Release_Support_Policy
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Ferramenta para modelagem

2009-12-18 Por tôpico Tiago Valério
Andre

Instalei o modelright  apresenta o seguinte erro apresentou, 'Database
libary not found', to fazendo um conexão remota.Existe a configuração da
libpq.Poderia me dar um auxilio na resolução deste problema?


Valeu.

2009/12/16 Andre Fernandes fernandes.an...@gmail.com

 Há algumas bacanas, a de que mais gosto é ModelRight for PostgreSQL
 (community edition).
 www.modelright.com
 Mas há outras também interessantes, mas não me recordo os nomes no momento.

 Minha dica fica para o ModelRight, tanto a versão gratuita é muito boa,
 quanto a paga que não é absurdamente cara como muitos concorrentes.

 Abraços,

 2009/12/16 Janderson Matos janderson.ma...@gmail.com

  Olá PessoALL,

 Alguém conhece uma ferramenta para modelagem (for Win), que seja
 free e que se aproxime ao máximo do MySQL Workbench (para quem
 conhece), ou poderia recomendar uma que tenha uma boa interface gráfica ?

 Janderson


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




 --
 André de Camargo Fernandes



 ___
 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] Res: Res: Problemas com Procedure no Linux

2009-12-18 Por tôpico marcos thomaz
Olá Eduardo,
Antes de mais nada, gostaria de agradecer pela ajuda.
Bem, se eu pegar o select que mostrei e executar diretamente, ele funciona, e 
cria a tabela tmp_table_tbg_01 (como o esperado). O caso é que a mesma sintaxe, 
na procedure, não está executando. Dá justamente o erro indicando a necessidade 
de uma variável. O caso é que pela sintaxe, a procedure deveria estar criando 
essa tabela (e fazia isso no windows normalmente, mas agora no linux não tá 
funcionando). Não estou no trabalho hoje (estou em um dos clientes). Assim que 
voltar pra casa, retorno com o código da função.

Novamente muito obrigado.

[]'s

Marcos Thomaz




De: Eduardo Santos eduardo.edusan...@gmail.com
Para: Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br
Enviadas: Quinta-feira, 17 de Dezembro de 2009 17:34:17
Assunto: Re: [pgbr-geral] Res: Problemas com Procedure no Linux

Olá Marcos,

Esse erro normalmente indica que você esqueceu de declarar a variável 
tmp_table_tbg_01 no corpo da função. Tem como você colocar todo o código da 
função? Principalmente o cabeçalho (declare)?


2009/12/17 marcos thomaz marcosthom...@yahoo.com.br


Marcelo, antes de mais nada, obrigado pela ajuda.
Quanto a versão, de ambos os S.O's é a 8.2.0.


A mensagem de erro gerada é essa:


ERROR: syntax error at tmp_table_tbg_01
SQL state: 42601
Detail: Expected record variable, row variable, or list of scalar variables 
following INTO.
Context: compile of PL/pgSQL function ajustarptanual near line 15






A linha na procedure onde dá o erro é a seguinte:


select coalesce(localidade,26) as localidade, coalesce(categoria,34) as 
categoria, refmm, sum(valor) as valor into tmp_table_tbg_01 from 
func_valor_arrecadacao( vMes ) group by
 1,2,3;






O log:


2009-12-17 18:16:47 ERROR:  syntax error at tmp_table_tbg_01
2009-12-17 18:16:47 DETAIL:  Expected record variable, row variable, or list 
of scalar variables following INTO.
2009-12-17 18:16:47 CONTEXT:  compile of PL/pgSQL function ajustarptanual 
near line 15




[]'s


Marcos Thomaz










 De: Marcelo Costa marcelojsco...@gmail.com
Para: Comunidade PostgreSQL Brasileira
 pgbr-geral@listas.postgresql.org.br
Enviadas: Quinta-feira, 17 de Dezembro de 2009 16:28:50
Assunto: Re: [pgbr-geral] Problemas com Procedure no Linux


Olá


2009/12/17 marcos thomaz marcosthom...@yahoo.com.br

Pessoal, tenho um banco de dados que rodava numa máquina com Windows 2003, 
versão 8.2 do banco de dados. A empresa optou por modificar algumas coisas e 
substituímos o sistema operacional. Trocamos de Windows 2003 para Linux - 
Slackware. Mantivemos a versão do banco, porém, depois disso começou a surgir 
alguns erros em procedures que existiam no banco de dados, todos vinculados a 
sintaxe do tipo:


select coluna1, coluna2, coluna3 into NovaTabela from Tabela Where condição.




Esse tipo de instrução está funcionando se eu executar diretamente, mas 
dentro da procedure está dando erro e o banco não consegue executar essas 
procedures.  Alguém teria alguma
 idéia?


1. Se você enviar os logs do PostgreSQL e as mensagens de erro da tua 
procedure certamente te ajudaremos

2. Se vc descrever direitinho a versão do PostgreSQL no windows e a que você 
utiliza no linux também poderemos te ajudar mais.

Blz ?

Atte,

-- 
Marcelo Costa
www.marcelocosta.net
-
“You can't always get what want”, 

Doctor House in apology to Mike Jagger



Veja quais são os assuntos do momento no Yahoo! + Buscados: Top 10 - 
Celebridades - Música - Esportes
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




-- 
Eduardo Santos
Analista de Sistemas

http://eduardosan.wordpress.com
http://twitter.com/eduardosan



  

Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Res: Problemas com Procedure no Linux

2009-12-18 Por tôpico Leonardo Cezar
2009/12/17 marcos thomaz marcosthom...@yahoo.com.br:

 ERROR: syntax error at tmp_table_tbg_01
 SQL state: 42601
 Detail: Expected record variable, row variable, or list of scalar variables
 following INTO.
 Context: compile of PL/pgSQL function ajustarptanual near line 15


 A linha na procedure onde dá o erro é a seguinte:
 select coalesce(localidade,26) as localidade, coalesce(categoria,34) as
 categoria, refmm, sum(valor) as valor into tmp_table_tbg_01 from
 func_valor_arrecadacao( vMes ) group by 1,2,3;

Altere para:
-- Se a tabela tmp_table_tbg_01 nao existe então crie:
CREATE TEMP TABLE tmp_table_tbg_01(
  localidade   TEXT
  categoriaTEXT
  refmm TEXT
  valor   TEXT
);
-- Senao só altere a linha que deu erro por esta daqui:
INSERT INTO tmp_table_tbg_01
   SELECT coalesce(localidade,26)
   , coalesce(categoria,34)
   , refmm, sum(valor) as valor
  FROM func_valor_arrecadacao(vMes)
GROUP BY 1,2,3;


Abraço!

-Leo
-- 
Leonardo Cezar
http://www.aslid.org.br
http://postgreslogia.wordpress.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Res: Res: Problemas com Procedure no Linux

2009-12-18 Por tôpico Osvaldo Kussama
2009/12/18 marcos thomaz marcosthom...@yahoo.com.br:
 Olá Eduardo,
 Antes de mais nada, gostaria de agradecer pela ajuda.
 Bem, se eu pegar o select que mostrei e executar diretamente, ele funciona,
 e cria a tabela tmp_table_tbg_01 (como o esperado). O caso é que a mesma
 sintaxe, na procedure, não está executando. Dá justamente o erro indicando a
 necessidade de uma variável. O caso é que pela sintaxe, a procedure deveria
 estar criando essa tabela (e fazia isso no windows normalmente, mas agora no
 linux não tá funcionando). Não estou no trabalho hoje (estou em um dos
 clientes). Assim que voltar pra casa, retorno com o código da função.


De acordo com o manual:
Tip:  Note that this interpretation of SELECT with INTO is quite
different from PostgreSQL's regular SELECT INTO command, wherein the
INTO target is a newly created table. If you want to create a table
from a SELECT result inside a PL/pgSQL function, use the syntax CREATE
TABLE ... AS SELECT. 
http://www.postgresql.org/docs/current/interactive/plpgsql-statements.html

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


[pgbr-geral] Res: Res: Problemas com Procedure no Linux

2009-12-18 Por tôpico marcos thomaz
Eu fiz isso pra resolver o problema já, mas não entendi porque não funciona no 
Linux, e no Windows funciona normal.

[]'s

Marcos Thomaz




De: Leonardo Cezar lhce...@gmail.com
Para: Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br
Enviadas: Sexta-feira, 18 de Dezembro de 2009 15:07:41
Assunto: Re: [pgbr-geral] Res: Problemas com Procedure no Linux

2009/12/17 marcos thomaz marcosthom...@yahoo.com.br:

 ERROR: syntax error at tmp_table_tbg_01
 SQL state: 42601
 Detail: Expected record variable, row variable, or list of scalar variables
 following INTO.
 Context: compile of PL/pgSQL function ajustarptanual near line 15


 A linha na procedure onde dá o erro é a seguinte:
 select coalesce(localidade,26) as localidade, coalesce(categoria,34) as
 categoria, refmm, sum(valor) as valor into tmp_table_tbg_01 from
 func_valor_arrecadacao( vMes ) group by 1,2,3;

Altere para:
-- Se a tabela tmp_table_tbg_01 nao existe então crie:
CREATE TEMP TABLE tmp_table_tbg_01(
  localidade   TEXT
  categoriaTEXT
  refmm TEXT
  valor   TEXT
);
-- Senao só altere a linha que deu erro por esta daqui:
INSERT INTO tmp_table_tbg_01
   SELECT coalesce(localidade,26)
   , coalesce(categoria,34)
   , refmm, sum(valor) as valor
  FROM func_valor_arrecadacao(vMes)
GROUP BY 1,2,3;


Abraço!

-Leo
-- 
Leonardo Cezar
http://www.aslid.org.br
http://postgreslogia.wordpress.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



  

Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Res: Res: Res: Problemas com Procedure no Linux

2009-12-18 Por tôpico marcos thomaz
Valeu Osvaldo, muito obrigado. Só estranhei o porque de funcionar em um S.O. e 
em outro não.

[]'s

Marcos Thomaz




De: Osvaldo Kussama osvaldo.kuss...@gmail.com
Para: Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br
Enviadas: Sexta-feira, 18 de Dezembro de 2009 15:08:07
Assunto: Re: [pgbr-geral] Res: Res: Problemas com Procedure no Linux

2009/12/18 marcos thomaz marcosthom...@yahoo.com.br:
 Olá Eduardo,
 Antes de mais nada, gostaria de agradecer pela ajuda.
 Bem, se eu pegar o select que mostrei e executar diretamente, ele funciona,
 e cria a tabela tmp_table_tbg_01 (como o esperado). O caso é que a mesma
 sintaxe, na procedure, não está executando. Dá justamente o erro indicando a
 necessidade de uma variável. O caso é que pela sintaxe, a procedure deveria
 estar criando essa tabela (e fazia isso no windows normalmente, mas agora no
 linux não tá funcionando). Não estou no trabalho hoje (estou em um dos
 clientes). Assim que voltar pra casa, retorno com o código da função.


De acordo com o manual:
Tip:  Note that this interpretation of SELECT with INTO is quite
different from PostgreSQL's regular SELECT INTO command, wherein the
INTO target is a newly created table. If you want to create a table
from a SELECT result inside a PL/pgSQL function, use the syntax CREATE
TABLE ... AS SELECT. 
http://www.postgresql.org/docs/current/interactive/plpgsql-statements.html

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



  

Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] GRANT

2009-12-18 Por tôpico Gabriel dos Santos
Boa a tarde a todos.

Alguém pode me dizer como eu defino nos privilegios de um usuario, no GRANT,
somente
para ele dar SELECT e criar VIEW´s?

Atenciosamente,
Gabriel dos Santos
Diretor Executivo
Focus Desenvolvimento e Consultoria
Fone(62) 8481-4662 / 3323-1078

Nossa Dedicação, Sua Recompensa
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] GRANT

2009-12-18 Por tôpico Leonardo Cezar
2009/12/18 Gabriel dos Santos focusdesenvolvime...@gmail.com:
 Boa a tarde a todos.

 Alguém pode me dizer como eu defino nos privilegios de um usuario, no GRANT,
 somente
 para ele dar SELECT e criar VIEW´s?

GRANT SELECT objeto TO usuario;
GRANT CREATE ON esquema TO usuario;

 Atenciosamente,
 Gabriel dos Santos
 Diretor Executivo
   ^^^

que coisa que é o nosso mercado  Um diretor trabalhando como DBA.

-Leo
-- 
Leonardo Cezar
http://www.aslid.org.br
http://postgreslogia.wordpress.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Res: Res: Res: Problemas com Procedure no Linux

2009-12-18 Por tôpico Osvaldo Kussama
2009/12/18 marcos thomaz marcosthom...@yahoo.com.br:
 Valeu Osvaldo, muito obrigado. Só estranhei o porque de funcionar em um S.O.
 e em outro não.
...
 http://www.postgresql.org/docs/current/interactive/plpgsql-statements.html


Creio que a questão não se relaciona ao S.O. mas, como descrita no
manual, ao comportamento que é diferente dentro ou fora de uma função
PL/pgSQL.

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


Re: [pgbr-geral] GRANT

2009-12-18 Por tôpico Osvaldo Kussama
2009/12/18 Leonardo Cezar lhce...@gmail.com:
 2009/12/18 Gabriel dos Santos focusdesenvolvime...@gmail.com:
 Boa a tarde a todos.

 Alguém pode me dizer como eu defino nos privilegios de um usuario, no GRANT,
 somente
 para ele dar SELECT e criar VIEW´s?

 GRANT SELECT objeto TO usuario;
 GRANT CREATE ON esquema TO usuario;

 Atenciosamente,
 Gabriel dos Santos
 Diretor Executivo
   ^^^

 que coisa que é o nosso mercado  Um diretor trabalhando como DBA.


Pô Leo, releva que é sexta-feira rs, rs

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


[pgbr-geral] Problema com ALTER TABLE depois de um SELECT

2009-12-18 Por tôpico Clayton Graf
Pessoal, estou tendo um problema e gostaria de saber como vocês fazem para
contornar a situação.

Quando faço um SELECT o pgsql gera um lock na tabela (AccessShareLock). Se
logo após faço um ALTER TABLE na mesma tabela este comando não é executado
devido ao LOCK gerado pelo SELECT.

Na prática isto significa que somente posso alterar a estrutura do banco
quando não tiver nenhum usuário conectado, o que dificulta as coisas.

É assim mesmo? Como vocês fazem? Tem como não gerar o lock AccessShareLock
após o select?

Obrigado,

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


Re: [pgbr-geral] Problema com ALTER TABLE depois de um SELECT

2009-12-18 Por tôpico Osvaldo Kussama
2009/12/18 Clayton Graf clay...@intelidata.inf.br:
 Pessoal, estou tendo um problema e gostaria de saber como vocês fazem para
 contornar a situação.
 Quando faço um SELECT o pgsql gera um lock na tabela (AccessShareLock). Se
 logo após faço um ALTER TABLE na mesma tabela este comando não é executado
 devido ao LOCK gerado pelo SELECT.
 Na prática isto significa que somente posso alterar a estrutura do banco
 quando não tiver nenhum usuário conectado, o que dificulta as coisas.
 É assim mesmo? Como vocês fazem? Tem como não gerar o lock AccessShareLock
 após o select?


Certamente você não está executando um SELECT simples mas sim um
SELECT com a cláusula FOR SHARE [1].

Osvaldo

[1] http://www.postgresql.org/docs/current/interactive/sql-select.html
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema com ALTER TABLE depois de um SELECT

2009-12-18 Por tôpico Euler Taveira de Oliveira
Osvaldo Kussama escreveu:
 2009/12/18 Clayton Graf clay...@intelidata.inf.br:
 Pessoal, estou tendo um problema e gostaria de saber como vocês fazem para
 contornar a situação.
 Quando faço um SELECT o pgsql gera um lock na tabela (AccessShareLock). Se
 logo após faço um ALTER TABLE na mesma tabela este comando não é executado
 devido ao LOCK gerado pelo SELECT.
 Na prática isto significa que somente posso alterar a estrutura do banco
 quando não tiver nenhum usuário conectado, o que dificulta as coisas.
 É assim mesmo? Como vocês fazem? Tem como não gerar o lock AccessShareLock
 após o select?
 
Não. Você certamente está deixando transações abertas antes de executar o
ALTER TABLE. Veja:

sessão A:

euler=# begin;
BEGIN
euler=# select * from aa;
 a | b
---+---
(0 rows)

sessão B:

euler=# begin;
BEGIN
euler=# alter table aa add column c integer; -- não retorna até conseguir lock
LOG:  process 4920 still waiting for AccessExclusiveLock on relation 73841 of
database 16384 after 1000.230 ms

sessão C:

euler=# select relation,relation::regclass,pid,mode,granted from pg_locks;
 relation | relation |  pid  |mode | granted
--+--+---+-+-
73841 | aa   |  4920 | AccessExclusiveLock | f
  |  |  4920 | ExclusiveLock   | t
10969 | pg_locks | 15405 | AccessShareLock | t
73841 | aa   | 15319 | AccessShareLock | t
  |  | 15319 | ExclusiveLock   | t
  |  | 15405 | ExclusiveLock   | t
(6 rows)

Veja que a primeira linha mostra que há um travamento que não foi adquirido
ainda (granted = 'f'). Logo abaixo descobrimos o processo 15319 com travamento
adiquirido que está bloqueando a transação que contém o ALTER TABLE.

sessão A:

euler=# rollback; -- depois desse comando o ALTER TABLE é executado
ROLLBACK

sessão B:

LOG:  process 4920 acquired AccessExclusiveLock on relation 73841 of database
16384 after 253610.896 ms
ALTER TABLE
euler=#

 Certamente você não está executando um SELECT simples mas sim um
 SELECT com a cláusula FOR SHARE [1].
 
Não necessariamente.

Vale ressaltar que _somente_ o AccessExclusiveLock conflita com o
AccessShareLock [1].


[1] http://www.postgresql.org/docs/8.4/static/explicit-locking.html


-- 
  Euler Taveira de Oliveira
  http://www.timbira.com/
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Formatar as Respostas de Erro do Banco de Dados

2009-12-18 Por tôpico Gabriel dos Santos
Boa noite a todos,

Gostaria de saber se existe alguma forma de tratar as menssagens de erro
quando violam um CONSTRAINT de que foi
estabelecida em uma tabela. Com por exemplo:

CONSTRAINT chk_valor_positivo CHECK (valor = 0);

Pois caso o meu sistema PHP quando for gravar um produto
com o valor negativo, o banco de dados irá retornar um mensagem
de erro da seguinte forma:

ERROR:  new row for relation tbproduto violates check constraint
chk_valor_positivo

so que eu gostaria de fazer com que caso a CHECK fosse violada, para
retornar a seguinte
mensagem:

O valor do produto não pode ser menor do que zero.

Alguem sabe como fazer isto?


-- 
Atenciosamente,
Gabriel dos Santos
Diretor Executivo
Focus Desenvolvimento e Consultoria
Fone(62) 8481-4662 / 3323-1078

Nossa Dedicação, Sua Recompensa
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] dúvida com expressões regulares e a função regexp_matches()

2009-12-18 Por tôpico Tarcísio Sassara
Estou tentando pegar todas as ocorrências dentro de um padrão e está complicado.

São palavras limitadas nos dois lados com um hífen -.

Tentei usar desta forma a função regexp_matches():

select regexp_matches('-MARIA- -JOAO- -PEDRO-', '-(.*)-')

Esperando retornar: {MARIA, JOAO, PEDRO}

Mas estou recebendo {MARIA- -JOAO- -PEDRO}

Isso porque:
O primeiro traço da minha expressão está casando com o primeiro traço da string.
O ultimo traço está casando com o ultimo da string.

Esperava casar com a primeira ocorrência logo
após a primeira palavra MARIA e assim ir construindo o vetor com os nomes.

-- 
Tarcisio F. Sassara
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Formatar as Respostas de Erro do Banco de Dados

2009-12-18 Por tôpico Tiago Adami
2009/12/18 Gabriel dos Santos focusdesenvolvime...@gmail.com:
 Boa noite a todos,

 Gostaria de saber se existe alguma forma de tratar as menssagens de erro
 quando violam um CONSTRAINT de que foi
 estabelecida em uma tabela. Com por exemplo:

 CONSTRAINT chk_valor_positivo CHECK (valor = 0);

 Pois caso o meu sistema PHP quando for gravar um produto
 com o valor negativo, o banco de dados irá retornar um mensagem
 de erro da seguinte forma:

 ERROR:  new row for relation tbproduto violates check constraint
 chk_valor_positivo

 so que eu gostaria de fazer com que caso a CHECK fosse violada, para
 retornar a seguinte
 mensagem:

 O valor do produto não pode ser menor do que zero.

 Alguem sabe como fazer isto?


Não trabalho com PHP então não sei se há como fazer isso, mas em
outras IDEs para desktop (Visual Foxpro, Powerbuilder, etc) é possível
tratar os erros de SQL antes que uma mensagem de erro _apareça_. Isto
depende mais do PHP, basta executar o comando SQL e testar o código de
retorno do banco de dados (geralmente SQLDBCode). Se o código for
erro, imprima uma mensagem diferente para o usuário.


-- 
TIAGO J. ADAMI
http://www.adamiworks.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Formatar as Respostas de Erro do Banco de Dados

2009-12-18 Por tôpico Tarcísio Sassara
2009/12/18 Gabriel dos Santos focusdesenvolvime...@gmail.com:
 Boa noite a todos,

 Gostaria de saber se existe alguma forma de tratar as menssagens de erro
 quando violam um CONSTRAINT de que foi
 estabelecida em uma tabela. Com por exemplo:

 CONSTRAINT chk_valor_positivo CHECK (valor = 0);

 Pois caso o meu sistema PHP quando for gravar um produto
 com o valor negativo, o banco de dados irá retornar um mensagem
 de erro da seguinte forma:

 ERROR:  new row for relation tbproduto violates check constraint
 chk_valor_positivo

 so que eu gostaria de fazer com que caso a CHECK fosse violada, para
 retornar a seguinte
 mensagem:

 O valor do produto não pode ser menor do que zero.

 Alguem sabe como fazer isto?


 --
 Atenciosamente,
 Gabriel dos Santos
 Diretor Executivo
 Focus Desenvolvimento e Consultoria
 Fone(62) 8481-4662 / 3323-1078

 Nossa Dedicação, Sua Recompensa

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



Não é algo relacionado ao PostgreSQL...

Depende de como estiver trabalhando com o PHP.

Se estiver usando o PDO, poderá usar blocos try-catch para
capturar os erros e tratar como na programação OO de sempre.

Documentação do PHP PDO:
http://php.net/manual/en/book.pdo.php

Outra solução usando o banco é criar uma procedure que insere o
registro e retorna
uma string com o status, tratando qualquer exceção na procedure,
Desta forma nunca retornará um erro para o script PHP.
O problema é ter que criar as funções no banco e manter mais coisas.

Abraço,
Infelizmente não posso lhe ajudar mais.
-- 
Tarcisio F. Sassara
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Ferramenta para modelagem

2009-12-18 Por tôpico Andre Fernandes
Claro,

Depois de instalar o programa, é necessário copiar todos os arquivos Dll da
pasta bin do postgresql para o programa. Eu também apanhei quanto a isso
antes, tinha copiado o arquivo libpq.dll e somente isso não era suficiente,
ai li que precisava copiar todas as dlls da instalação do postgresql e
finalmente tudo funcionou!

Espero que também funcione direito contigo,
Abraços,

2009/12/18 Tiago Valério tiagosvale...@gmail.com

 Andre

 Instalei o modelright  apresenta o seguinte erro apresentou, 'Database
 libary not found', to fazendo um conexão remota.Existe a configuração da
 libpq.Poderia me dar um auxilio na resolução deste problema?


 Valeu.

 2009/12/16 Andre Fernandes fernandes.an...@gmail.com

 Há algumas bacanas, a de que mais gosto é ModelRight for PostgreSQL
 (community edition).

 www.modelright.com
 Mas há outras também interessantes, mas não me recordo os nomes no
 momento.

 Minha dica fica para o ModelRight, tanto a versão gratuita é muito boa,
 quanto a paga que não é absurdamente cara como muitos concorrentes.

 Abraços,

 2009/12/16 Janderson Matos janderson.ma...@gmail.com

  Olá PessoALL,

 Alguém conhece uma ferramenta para modelagem (for Win), que seja
 free e que se aproxime ao máximo do MySQL Workbench (para quem
 conhece), ou poderia recomendar uma que tenha uma boa interface gráfica ?

 Janderson


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




 --
 André de Camargo Fernandes



 ___
 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




-- 
André de Camargo Fernandes
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] dúvida com expressões regulares e a função regexp_matches()

2009-12-18 Por tôpico Osvaldo Kussama
2009/12/18 Tarcísio Sassara sassara.tarci...@gmail.com:
 Estou tentando pegar todas as ocorrências dentro de um padrão e está 
 complicado.

 São palavras limitadas nos dois lados com um hífen -.

 Tentei usar desta forma a função regexp_matches():

 select regexp_matches('-MARIA- -JOAO- -PEDRO-', '-(.*)-')

 Esperando retornar: {MARIA, JOAO, PEDRO}

 Mas estou recebendo {MARIA- -JOAO- -PEDRO}

 Isso porque:
 O primeiro traço da minha expressão está casando com o primeiro traço da 
 string.
 O ultimo traço está casando com o ultimo da string.

 Esperava casar com a primeira ocorrência logo
 após a primeira palavra MARIA e assim ir construindo o vetor com os nomes.



Da forma abaixo o primeiro e último elemntos do array são strings de
comprimento zero:

bdteste=# select regexp_split_to_array('-MARIA- -JOAO- -PEDRO-', E'-( -)?');
  regexp_split_to_array
--
 {,MARIA,JOAO,PEDRO,}
(1 registro)

Uma possível maneira de evitar isso seria eliminar o '-' do início e
fim antes de tratar:

bdteste=# select regexp_split_to_array(regexp_replace('-MARIA- -JOAO-
-PEDRO-','^-(.*)-$',E'\\1'), E'- -');
 regexp_split_to_array
---
 {MARIA,JOAO,PEDRO}
(1 registro)

Deve existir uma maneira mais elegante.

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