Re: [pgbr-geral] Instalação silenciosa

2010-03-09 Por tôpico Fabrízio de Royes Mello
Em 9 de março de 2010 07:43, Pedro B. Alves pedroalve...@gmail.comescreveu:

 Pessoal estou tentando fazer um instalador para nossos sistemas, mas
 me deparei com a instalação do banco.

 Alguém poderia me dar uma ajuda para fazer o script de instalação do
 postgresql?


Como vc não mencionou a versão do PostgreSQL suponho que estejas utilizando
a última versão estável (8.4), então vc encontrará as informações que
precisa em [1].

[1] http://www.enterprisedb.com/learning/pginst_guide.do

-- 
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


[pgbr-geral] Instalação silenciosa

2010-03-09 Por tôpico Pedro B. Alves
Pessoal estou tentando fazer um instalador para nossos sistemas, mas
me deparei com a instalação do banco.

Alguém poderia me dar uma ajuda para fazer o script de instalação do postgresql?

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] variavel com nome variavel

2010-03-09 Por tôpico Osvaldo Kussama
Em 9 de março de 2010 09:45, flavio fla...@atttransbordo.com.br escreveu:


 Por favor
 Gostaria de saber se eh possivel fazer isto em uma funcao.

 estou tentando pegar o valor de uma variavel montando o nome desta
 variavel. ( nao sei como me expressar, talvez por isso nao consigo achar
 mais info nos manuais)
 assim:

 select mov_rec.id_contrato into valor;
 RAISE NOTICE ''valor: (%)'', valor;
 isto eh o que eu quero no final, mas 'mov_rec.id_contrato' eu estou
 montanto em um loop porque alem de id_contrato vao ter outros campos
 para pesquisar em mov_rec, assim:

 nome_campo := ''mov_rec'' || ''.'' || tabela_detalhe_campos;

 o valor de nome_campo fica: 'mov_rec.id_contrato'
 qual a sintaxe que eu posso usar para conseguir o valor da variavel que
 esta em 'nome_campo'?

 Ja tentei assim:
 select nome_campo into valor_var;

 Ja tentei assim:
 select quote_literal(nome_campo) into valor_var;

 assim:
 EXECUTE ''select quote_literal(nome_campo)'' INTO valor_rec;

 assim:
 EXECUTE nome_campo INTO valor_rec;

 assim:
 FOR valor_rec IN EXECUTE nome_campo LOOP
 END LOOP;

 Mas nao cosegui pegar o valor, alguem poderia me dara uma luz ou mais
 alguma referencia nos manuais?
 Muito obrigado

 So mais uma duvida, como eu acesso o historico das discussoes da lista?



Tente:
EXECUTE 'SELECT quote_literal(' || nome_campo ||') INTO valor_rec';

dica: monte a expressão em uma variável e coloque um raise notice
desta variável para confirmar se a expressão SQL é efetivamente a que
você deseja.

O histórico está em:
http://listas.postgresql.org.br/pipermail/pgbr-geral/
ou ainda você pode usar um agregador, como por ex. o nabble:
http://old.nabble.com/PostgreSQL---Brasil-f15652.html

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] variavel com nome variavel

2010-03-09 Por tôpico Dickson S. Guedes
Em 9 de março de 2010 09:45, flavio fla...@atttransbordo.com.br escreveu:


 Por favor
 Gostaria de saber se eh possivel fazer isto em uma funcao.

 estou tentando pegar o valor de uma variavel montando o nome desta
 variavel. ( nao sei como me expressar, talvez por isso nao consigo achar
 mais info nos manuais)
 assim:

 select mov_rec.id_contrato into valor;
 RAISE NOTICE ''valor: (%)'', valor;
 isto eh o que eu quero no final, mas 'mov_rec.id_contrato' eu estou
 montanto em um loop porque alem de id_contrato vao ter outros campos
 para pesquisar em mov_rec, assim:

 nome_campo := ''mov_rec'' || ''.'' || tabela_detalhe_campos;

 o valor de nome_campo fica: 'mov_rec.id_contrato'
 qual a sintaxe que eu posso usar para conseguir o valor da variavel que
 esta em 'nome_campo'?


Dê uma olhada no manual [1] talvez esclareça melhor sua dúvida.

[1] 
http://www.postgresql.org/docs/8.3/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN

-- 
Dickson S. Guedes
mail/xmpp: gue...@guedesoft.net - skype: guediz
http://guedesoft.net - http://www.postgresql.org.br
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] variavel com nome variavel

2010-03-09 Por tôpico Dickson S. Guedes
Em 9 de março de 2010 10:25, Osvaldo Kussama
osvaldo.kuss...@gmail.com escreveu:
 Tente:
 EXECUTE 'SELECT quote_literal(' || nome_campo ||') INTO valor_rec';

Ola Osvaldo,

Aquele  INTO valor_rec não deveria ser fora das aspas (')? Ou seja,
deveria fazer parte do EXECUTE e não do SELECT dinâmico. Por exemplo:

EXECUTE 'SELECT quote_literal(' || nome_campo || ') FROM nome_tabela'
INTO valor_rec;

[]s
Dickson S. Guedes
mail/xmpp: gue...@guedesoft.net - skype: guediz
http://guedesoft.net - http://www.postgresql.org.br
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] variavel com nome variavel

2010-03-09 Por tôpico Osvaldo Kussama
Em 9 de março de 2010 10:38, Dickson S. Guedes lis...@guedesoft.net escreveu:
 Em 9 de março de 2010 10:25, Osvaldo Kussama
 osvaldo.kuss...@gmail.com escreveu:
 Tente:
 EXECUTE 'SELECT quote_literal(' || nome_campo ||') INTO valor_rec';

 Ola Osvaldo,

 Aquele  INTO valor_rec não deveria ser fora das aspas (')? Ou seja,
 deveria fazer parte do EXECUTE e não do SELECT dinâmico. Por exemplo:

 EXECUTE 'SELECT quote_literal(' || nome_campo || ') FROM nome_tabela'
 INTO valor_rec;



Perfeitamente, na pressa acabei omitindo parte do comando.

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


[pgbr-geral] variavel com nome variavel

2010-03-09 Por tôpico flavio


Por favor
Gostaria de saber se eh possivel fazer isto em uma funcao.

estou tentando pegar o valor de uma variavel montando o nome desta 
variavel. ( nao sei como me expressar, talvez por isso nao consigo achar 
mais info nos manuais)
assim:

select mov_rec.id_contrato into valor;
RAISE NOTICE ''valor: (%)'', valor;
isto eh o que eu quero no final, mas 'mov_rec.id_contrato' eu estou 
montanto em um loop porque alem de id_contrato vao ter outros campos 
para pesquisar em mov_rec, assim:

nome_campo := ''mov_rec'' || ''.'' || tabela_detalhe_campos;

o valor de nome_campo fica: 'mov_rec.id_contrato'
qual a sintaxe que eu posso usar para conseguir o valor da variavel que 
esta em 'nome_campo'?

Ja tentei assim:
select nome_campo into valor_var;

Ja tentei assim:
select quote_literal(nome_campo) into valor_var;

assim:
EXECUTE ''select quote_literal(nome_campo)'' INTO valor_rec;

assim:
EXECUTE nome_campo INTO valor_rec;

assim:
FOR valor_rec IN EXECUTE nome_campo LOOP
END LOOP;

Mas nao cosegui pegar o valor, alguem poderia me dara uma luz ou mais 
alguma referencia nos manuais?
Muito obrigado

So mais uma duvida, como eu acesso o historico das discussoes da lista?

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


Re: [pgbr-geral] variavel com nome variavel

2010-03-09 Por tôpico flavio
Em 9 de março de 2010 10:25, Osvaldo Kussama

 osvaldo.kuss...@gmail.com escreveu:

  Tente:
  EXECUTE 'SELECT quote_literal(' || nome_campo ||') INTO valor_rec';
   

 Ola Osvaldo,

 Aquele  INTO valor_rec não deveria ser fora das aspas (')? Ou seja,
 deveria fazer parte do EXECUTE e não do SELECT dinâmico. Por exemplo:

 EXECUTE 'SELECT quote_literal(' || nome_campo || ') FROM nome_tabela'
 INTO valor_rec;




Perfeitamente, na pressa acabei omitindo parte do comando.

Osvaldo


Obrigado Osvaldo e Guedes pelas dicas

Está acontecendo o seguinte:
Se eu fizer assim:


EXECUTE ''select quote_literal( '' || nome_campo || '' ) '' INTO valor_rec;
sendo o valor de nome_campo = 'mov_rec.id_contrato' fica assim...

EXECUTE select ' mov_rec.id_contrato' INTO valor_rec;
aqui eu recebo o seguinte erro:

WARNING:  Error occurred while executing PL/pgSQL function f_gera_fatura
WARNING:  line 550 at execute statement
ERROR: Relation mov_rec does not exist


Mas se eu faço assim:
EXECUTE ''select '' || quote_literal(nome_campo ) INTO valor_rec;
fica assim...

EXECUTE select 'mov_rec.id_contrato' INTO valor_rec;
aqui nao recebo erro mas como fazer para ver o valor de valor_rec?

RAISE NOTICE ''valor_rec: (%)'', valor_rec;
retorna  (NULL)




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


[pgbr-geral] Localizar determinado caracter

2010-03-09 Por tôpico Danilo Gomes [PGOpen]
É possível localizar determinado caracter nos registros de uma tabela?

Exemplo: em minha tabela, os registros estão da seguinte forma: Promo��o.
(é isso mesmo, interrogação dentro de um triângulo).

o certo seria Promoção, ou seja, existe algum comando que eu execute e
retorne todos os registros que contenham �.

Agradeço desde já a todos pela colaboração.

-- 
Atenciosamente,

Danilo Gomes
Desenvolvimento
55 11 2864-0041
55 11 2864-0082
danilo.go...@pgopen.com.br
www.pgopen.com.br
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Localizar determinado caracter

2010-03-09 Por tôpico Leandro DUTRA
2010/3/9 Danilo Gomes [PGOpen] danilo.go...@pgopen.com.br:
 É possível localizar determinado caracter nos registros de uma tabela?

Já olhaste a documentação sobre funções de caracter?


-- 
skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3854 7191  gTalk: xmpp:leand...@jabber.org
+55 (11) 9406 7191ICQ/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


Re: [pgbr-geral] Localizar determinado caracter

2010-03-09 Por tôpico Alexsander Rosa
Isso é problema de encoding. Provavelmente caracteres LATIN1 num banco UTF-8
ou vice-versa.

Em 9 de março de 2010 16:18, Danilo Gomes [PGOpen] 
danilo.go...@pgopen.com.br escreveu:

 É possível localizar determinado caracter nos registros de uma tabela?

 Exemplo: em minha tabela, os registros estão da seguinte forma: Promo��o.
 (é isso mesmo, interrogação dentro de um triângulo).

 o certo seria Promoção, ou seja, existe algum comando que eu execute e
 retorne todos os registros que contenham �.

 Agradeço desde já a todos pela colaboração.





-- 
Atenciosamente,
Alexsander da Rosa
Linux User #113925

Extremismo na defesa da liberdade não é defeito.
Moderação na busca por justiça não é virtude.
-- Barry Goldwater
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Fwd: pgfouine

2010-03-09 Por tôpico André Ormenese ( Yahoo )
Boa tarde a todos !!!

Pessoal instalei o pgfouine mas não consigo ler os logs. Os arquivos
html são criados mas sem informações.

Meu ambiente :
SO = Freebsd 7.1
Banco 8.4.2
Pgfouine 1.0.1

No postgresql.conf habilitei o log com :

log_destination = 'stderr'
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d.log'
#log_truncate_on_rotation = off
log_rotation_age = 1d
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d '

Quando tento executar o pgfouine com as seguintes opções :

/usr/local/bin/pgfouine -file postgresql-2010-03-09.log -top 40 -report
queries.html=overall,bytype,slowest,n-mosttime,n-mostfrequent,n-slowestaverage
-report hourly.html=overall,hourly -report
errors.html=overall,n-mostfrequenterrors -format html-with-graphs
-logtype stderr

recebo as seguintes mensagens :

Unrecognized LOG or DEBUG line: user=,db= LOG:  database system was shut
down at 2010-03-09 14:41:05 BRT - log line 1
Unrecognized LOG or DEBUG line: user=,db= LOG:  database system is ready
to accept connections - log line 2
Unrecognized LOG or DEBUG line: user=,db= LOG:  autovacuum launcher
started - log line 3
Your log file contains multiline queries. We cannot guarantee the
consistency of the queries.
PHP Warning:  min(): Array must contain at least one element in
/usr/local/share/pgfouine/include/reporting/reports/HourlyStatsReport.class.php
on line 148
PHP Warning:  max(): Array must contain at least one element in
/usr/local/share/pgfouine/include/reporting/reports/HourlyStatsReport.class.php
on line 149


Agora não sei se tem algum erro na instalação, ou se preciso mudar o
formato do log !!!
Pela mensagem de erro do php, algum array não foi gerado. Estou
imaginando que o arquivo de log foi lido pelo pgfouine, mas não foi
gerado o array com as informações.

Alguém tem alguma sugestão ???

Obrigado
André



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


[pgbr-geral] Estatísticas de Acesso

2010-03-09 Por tôpico Wagner Mariotto Bonfiglio
Boa tarde senhores!

Seguinte, estou planejando um sistema web (evolução de um já existente) e
tive uma discussão com o chefe do projeto sobre como armazenar algumas
estatísticas, por isso gostaria da opinião de vocês.

Explicando:
Basicamente quando entramos na página de detalhes de um produto precisamos
armazenar duas informações: o ID do produto e a data.
Então a princípio temos duas abordagens:
1) INSERT INTO estatisticas VALUES (ID,DATA);
2) UPDATE estatisticas SET total = total+1 WHERE ID = ... AND DATA = ...;

Duas questões importantes:
- Essa estatística estará disponível apenas para o dono do produto, que
acessará um ADMIN onde poderá visualizar o número de cliques no produto
dele.
- Fazendo uma média do último mês, teríamos 500k visitas em produtos por
mês. Mas a perspectiva é pra crescimento com o novo sistema, então fizemos a
perspectiva de 9M de visitas em produtos num período de 6 meses (1,5M por
mês).

Pergunta:
quais as vantagens de cada abordagem sobre a outra? Existe algum método
consolidado de como deve ser feito isso?

Completando:
Também foi discutida a ideia de fazer uma solução intermediária, mantendo a
tabela apenas com ID e DATA (para preservar apenas os inserts nas visitas) e
rodando um serviço 3 ou 4 vezes por dia para alimentar uma outra tabela que
armazenaria o ID, a DATA e o COUNT para aquela data... Seria válida também?

Desde já agradeço!

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


Re: [pgbr-geral] variavel com nome variavel

2010-03-09 Por tôpico Osvaldo Kussama
Em 9 de março de 2010 16:08, flavio fla...@atttransbordo.com.br escreveu:

 Obrigado Osvaldo e Guedes pelas dicas

 Está acontecendo o seguinte:
 Se eu fizer assim:


 EXECUTE ''select quote_literal( '' || nome_campo || '' ) '' INTO valor_rec;
 sendo o valor de nome_campo = 'mov_rec.id_contrato' fica assim...

 EXECUTE select ' mov_rec.id_contrato' INTO valor_rec;
 aqui eu recebo o seguinte erro:

 WARNING:  Error occurred while executing PL/pgSQL function f_gera_fatura
 WARNING:  line 550 at execute statement
 ERROR: Relation mov_rec does not exist


 Mas se eu faço assim:
 EXECUTE ''select '' || quote_literal(nome_campo ) INTO valor_rec;
 fica assim...

 EXECUTE select 'mov_rec.id_contrato' INTO valor_rec;
 aqui nao recebo erro mas como fazer para ver o valor de valor_rec?

 RAISE NOTICE ''valor_rec: (%)'', valor_rec;
 retorna  (NULL)



Creio que seu comando esteja incompleto, talvez seja algo do tipo:

EXECUTE
   'SELECT ' || quote_ident(nome_campo) || ' FROM ' ||
quote_ident(sua_tabela) || ' WHERE '  || quote_ident (seu_campo) || '
= ' || quote_literal(valor)
INTO valor_rec;

repare que é
EXECUTE
   'string com o comando a ser executado'
INTO valor_rec;

Veja
http://www.postgresql.org/docs/current/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN

Caso esteja enfrentando dificuldades com os caracteres delimitadores '
veja 4.1.2.4. Dollar-Quoted String Constants em:
http://www.postgresql.org/docs/current/interactive/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS

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


[pgbr-geral] Histórico de Atualizações

2010-03-09 Por tôpico Alipio Dantas
Srs.

Preciso manter um histórico de atualizações em determinadas tabelas do
banco, ou seja quando um registro for alterado, ser mantido também o valor
anterior.

Pensei em replicar os dados em uma mesma tabela, o que não é legal, a tabela
ficaria com um volume de informações que não é acessado com frequencia.

Pensei em clonar a view dentro do banco e inserir nas tabelas referentes
as linhas atualizadas com a data de atualização. Pra isso o ideal seria uma
triger que fizesse este procedimento quando um dado for alterado. O problema
é que não sei por onde começar.



Alguém poderia me indicar um caminho?

Obrigado.



-- 
Alípio Dantas da Silva
Secretaria de Desenvolvimento Urbano do Estado da Bahia
Coordenação de Informações Geográficas Urbanas - CGI
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Histórico de Atualizações

2010-03-09 Por tôpico Alexsander Rosa
Eu uso triggers que armazenam as colunas necessárias (no meu caso, são
valores monetários) numa tabela. Tenho colunas como datahora (timestamp),
tabela/coluna (2 x varchar); e valor anterior/novo (2 x numeric), ID do
usuário que alterou, etc. Fica uma tabela única com todas as alterações que
pode ser facilmente pesquisada.

Em 9 de março de 2010 17:22, Alipio Dantas alipiodan...@gmail.comescreveu:

 Srs.

 Preciso manter um histórico de atualizações em determinadas tabelas do
 banco, ou seja quando um registro for alterado, ser mantido também o valor
 anterior.

 Pensei em replicar os dados em uma mesma tabela, o que não é legal, a
 tabela ficaria com um volume de informações que não é acessado com
 frequencia.

 Pensei em clonar a view dentro do banco e inserir nas tabelas referentes
 as linhas atualizadas com a data de atualização. Pra isso o ideal seria uma
 triger que fizesse este procedimento quando um dado for alterado. O problema
 é que não sei por onde começar.



 Alguém poderia me indicar um caminho?

 Obrigado.



 --
 Alípio Dantas da Silva
 Secretaria de Desenvolvimento Urbano do Estado da Bahia
 Coordenação de Informações Geográficas Urbanas - CGI


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




-- 
Atenciosamente,
Alexsander da Rosa
Linux User #113925

Extremismo na defesa da liberdade não é defeito.
Moderação na busca por justiça não é virtude.
-- Barry Goldwater
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Histórico de Atualizações

2010-03-09 Por tôpico Bruno Simioni
Alípio,

Há um tempo atrás resolvi esse problema criando cadeia de triggers nas
minhas tabelas de interesse, fazendo com que através dos objetos NEW e
OLD (no momento do processamento da trigger), eu conseguisse gravar em
uma terceira tabela somente as diferenças dos valores (em caso de
UPDATE), ou informações de DELETE e INSERT, juntamente com dados da
operação (timestamp, usuário, entre outros). Isso funcionava como um
Audit Table de garagem.

Se eu não me engano (me corrijam por favor), o PostgreSQL tem o Table
Audit, que provavelmente ajudará você a resolver seu problema.

Boa sorte,

Bruno Simioni.


2010/3/9 Alipio Dantas alipiodan...@gmail.com:
 Srs.

 Preciso manter um histórico de atualizações em determinadas tabelas do
 banco, ou seja quando um registro for alterado, ser mantido também o valor
 anterior.

 Pensei em replicar os dados em uma mesma tabela, o que não é legal, a tabela
 ficaria com um volume de informações que não é acessado com frequencia.

 Pensei em clonar a view dentro do banco e inserir nas tabelas referentes
 as linhas atualizadas com a data de atualização. Pra isso o ideal seria uma
 triger que fizesse este procedimento quando um dado for alterado. O problema
 é que não sei por onde começar.



 Alguém poderia me indicar um caminho?

 Obrigado.



 --
 Alípio Dantas da Silva
 Secretaria de Desenvolvimento Urbano do Estado da Bahia
 Coordenação de Informações Geográficas Urbanas - CGI


 ___
 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] variavel com nome variavel]

2010-03-09 Por tôpico flavio
Creio que seu comando esteja incompleto, talvez seja algo do tipo:

EXECUTE
   'SELECT ' || quote_ident(nome_campo) || ' FROM ' ||
quote_ident(sua_tabela) || ' WHERE '  || quote_ident (seu_campo) || '
= ' || quote_literal(valor)
INTO valor_rec;

repare que é
EXECUTE
   'string com o comando a ser executado'

Osvaldo
Eu faço uma consulta com FOR LOOP
FOR mov_rec IN 
EXECUTE ''SELECT * ''
|| '' FROM ''
|| contratos_fat_rec.nome_tabela_1
|| '' WHERE id_contrato = ''
|| contratos_fat_rec.id_contrato
LOOP

O problema é que eu preciso pegar os valores retornados cujo nome eu tenho que 
montar dentro de outro loop em um array que contem os nomes dos campos para o 
record 'mov_rec'.

mov_rec + nome_campo_array

Assim:

mov_rec.id_contrato
mov_rec.ticket
mov_rec.veiculo
...

para pegar o valor eu posso usar

select mov_rec.id_contrato into valor;

O problema é que a parte 'id_contrato' vem do loop no array com os nomes, então 
o que eu tinha achado 
no manual era o comando EXECUTE para fazer o comando dinamico.
Por isso eu estou tentando assim:

EXECUTE ''select mov_rec'' || ''.'' || nome_campo_array INTO valor_rec;

mas parece que dentro do EXECUTE nao é reconhecido o 'mov_rec', é a impressao 
que dá...
Talvez tenha outra maneira de pegar os valores mas nao encontrei.

Não sei se me expressei bem, mas obrigado pela atenção, se tiver mais alguma 
dica...



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


Re: [pgbr-geral] Histórico de Atualizações

2010-03-09 Por tôpico Pablo Sánchez
Há várias formas de fazer. Eu pessoalmente criar uma tabela extra, com
os dados mutáveis, vinculada 1-n com a original, guardando assim
versões das informações. Ou seja, mantenha a tabela original tal qual,
crie uma outra onde vc faz o insert dos novos dados, com timestamp da
atualização. Isso permitiria até uma visualização do histórico de
alterações, se for necessário.

Aí, vc pode fazer uma trigger on update para fazer o insert nessa
outra tabela. Dessa forma, fica transparente para qualquer aplicação
que já tenha sido criada (nenhuma alteração estrutural importante no
banco), e você ainda mantém a tabela original limpa, ou seja, apenas
com o dado atualizado.

Em 9 de março de 2010 17:22, Alipio Dantas alipiodan...@gmail.com escreveu:
 Srs.

 Preciso manter um histórico de atualizações em determinadas tabelas do
 banco, ou seja quando um registro for alterado, ser mantido também o valor
 anterior.

 Pensei em replicar os dados em uma mesma tabela, o que não é legal, a tabela
 ficaria com um volume de informações que não é acessado com frequencia.

 Pensei em clonar a view dentro do banco e inserir nas tabelas referentes
 as linhas atualizadas com a data de atualização. Pra isso o ideal seria uma
 triger que fizesse este procedimento quando um dado for alterado. O problema
 é que não sei por onde começar.



 Alguém poderia me indicar um caminho?

 Obrigado.



 --
 Alípio Dantas da Silva
 Secretaria de Desenvolvimento Urbano do Estado da Bahia
 Coordenação de Informações Geográficas Urbanas - CGI


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





-- 
=
Pablo Santiago Sánchez
Análise e Desenvolvimento de Sistemas Web
Zend Certified Engineer #ZEND006757
phack...@gmail.com
(61) 9975-0883
http://www.sansis.com.br
http://www.corephp.com.br
Quidquid latine dictum sit, altum viditur
=
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Histórico de Atualizações

2010-03-09 Por tôpico Alipio Dantas
Srs.

Primeiramente obrigado pelas sugestões.

Realmente foi bem simples. Criei uma tabela de histórico e fiz uma trigger
para armazenar o valor atual antes de ser atualizado.
Vou pesquisar sobre a tabela de auditoria do postgres.

Mais uma vez obrigado a todos.

Em 9 de março de 2010 18:25, Pablo Sánchez phack...@gmail.com escreveu:

 Há várias formas de fazer. Eu pessoalmente criar uma tabela extra, com
 os dados mutáveis, vinculada 1-n com a original, guardando assim
 versões das informações. Ou seja, mantenha a tabela original tal qual,
 crie uma outra onde vc faz o insert dos novos dados, com timestamp da
 atualização. Isso permitiria até uma visualização do histórico de
 alterações, se for necessário.

 Aí, vc pode fazer uma trigger on update para fazer o insert nessa
 outra tabela. Dessa forma, fica transparente para qualquer aplicação
 que já tenha sido criada (nenhuma alteração estrutural importante no
 banco), e você ainda mantém a tabela original limpa, ou seja, apenas
 com o dado atualizado.

 Em 9 de março de 2010 17:22, Alipio Dantas alipiodan...@gmail.com
 escreveu:
  Srs.
 
  Preciso manter um histórico de atualizações em determinadas tabelas do
  banco, ou seja quando um registro for alterado, ser mantido também o
 valor
  anterior.
 
  Pensei em replicar os dados em uma mesma tabela, o que não é legal, a
 tabela
  ficaria com um volume de informações que não é acessado com frequencia.
 
  Pensei em clonar a view dentro do banco e inserir nas tabelas
 referentes
  as linhas atualizadas com a data de atualização. Pra isso o ideal seria
 uma
  triger que fizesse este procedimento quando um dado for alterado. O
 problema
  é que não sei por onde começar.
 
 
 
  Alguém poderia me indicar um caminho?
 
  Obrigado.
 
 
 
  --
  Alípio Dantas da Silva
  Secretaria de Desenvolvimento Urbano do Estado da Bahia
  Coordenação de Informações Geográficas Urbanas - CGI
 
 
  ___
  pgbr-geral mailing list
  pgbr-geral@listas.postgresql.org.br
  https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
 
 



 --
 =
 Pablo Santiago Sánchez
 Análise e Desenvolvimento de Sistemas Web
 Zend Certified Engineer #ZEND006757
 phack...@gmail.com
 (61) 9975-0883
 http://www.sansis.com.br
 http://www.corephp.com.br
 Quidquid latine dictum sit, altum viditur
 =
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




-- 
Alípio Dantas da Silva
Secretaria de Desenvolvimento Urbano do Estado da Bahia
Coordenação de Informações Geográficas Urbanas - CGI
DBA - Geo
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Array como parâmetro e retorno da m esma função

2010-03-09 Por tôpico Tiago Kepe

Oi pessoal,

Preciso de ajuda, procurei na net e post antigos, mas não encontrei nada que me 
ajudasse.

Preciso passar um array como parâmetro para uma função e ela me retornará o 
mesmo array alterado.
Vi algumas explicações na net e a função atualmente está assim:

CREATE OR REPLACE FUNCTION teste_array(integer[]) RETURNS integer[] AS $$

DECLARE

array integer[];

BEGIN

 array := $1;
 FOR i IN 1..10 LOOP

array[i] := i+9;

END LOOP;

RETURN array;

END;

$$ LANGUAGE plpgsql;


Porém está retornando o seguinte erro:

psql:teste.sql:14: ERRO:  não pode mudar o tipo de retorno da função existente
HINT:  Primeiro utilize DROP FUNCTION.

P.S. Já coloquei um DROP FUNCTION teste_array() no começo da função, não acho 
necessário pq tem um REPLACE, mas em todo caso.



  
_
Quer transformar suas fotos em emoticons para Messenger? Conheça o I Love 
Messenger.
http://ilm.windowslive.com.br/?ocid=ILM:ILM:Hotmail:Tagline:1x1:Tagline___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Fwd: pgfouine

2010-03-09 Por tôpico Matheus Ricardo Espanhol
André,

Esse erro acontece com todos os arquivos de logs do PostgreSQL?

Abraço

2010/3/9 André Ormenese ( Yahoo ) ormen...@yahoo.com.br

 Boa tarde a todos !!!

 Pessoal instalei o pgfouine mas não consigo ler os logs. Os arquivos
 html são criados mas sem informações.

 Meu ambiente :
 SO = Freebsd 7.1
 Banco 8.4.2
 Pgfouine 1.0.1

 No postgresql.conf habilitei o log com :

 log_destination = 'stderr'
 logging_collector = on
 log_directory = 'pg_log'
 log_filename = 'postgresql-%Y-%m-%d.log'
 #log_truncate_on_rotation = off
 log_rotation_age = 1d
 log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d '

 Quando tento executar o pgfouine com as seguintes opções :

 /usr/local/bin/pgfouine -file postgresql-2010-03-09.log -top 40 -report

 queries.html=overall,bytype,slowest,n-mosttime,n-mostfrequent,n-slowestaverage
 -report hourly.html=overall,hourly -report
 errors.html=overall,n-mostfrequenterrors -format html-with-graphs
 -logtype stderr

 recebo as seguintes mensagens :

 Unrecognized LOG or DEBUG line: user=,db= LOG:  database system was shut
 down at 2010-03-09 14:41:05 BRT - log line 1
 Unrecognized LOG or DEBUG line: user=,db= LOG:  database system is ready
 to accept connections - log line 2
 Unrecognized LOG or DEBUG line: user=,db= LOG:  autovacuum launcher
 started - log line 3
 Your log file contains multiline queries. We cannot guarantee the
 consistency of the queries.
 PHP Warning:  min(): Array must contain at least one element in

 /usr/local/share/pgfouine/include/reporting/reports/HourlyStatsReport.class.php
 on line 148
 PHP Warning:  max(): Array must contain at least one element in

 /usr/local/share/pgfouine/include/reporting/reports/HourlyStatsReport.class.php
 on line 149


 Agora não sei se tem algum erro na instalação, ou se preciso mudar o
 formato do log !!!
 Pela mensagem de erro do php, algum array não foi gerado. Estou
 imaginando que o arquivo de log foi lido pelo pgfouine, mas não foi
 gerado o array com as informações.

 Alguém tem alguma sugestão ???

 Obrigado
 André



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




-- 
Matheus Ricardo Espanhol
---
Dextra Sistemas
http://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


Re: [pgbr-geral] Array como parâmetro e retorno da m esma função

2010-03-09 Por tôpico Osvaldo Kussama
Em 9 de março de 2010 19:29, Tiago Kepe tiagok...@hotmail.com escreveu:
 Oi pessoal,

 Preciso de ajuda, procurei na net e post antigos, mas não encontrei nada que
 me ajudasse.

 Preciso passar um array como parâmetro para uma função e ela me retornará o
 mesmo array alterado.
 Vi algumas explicações na net e a função atualmente está assim:

 CREATE OR REPLACE FUNCTION teste_array(integer[]) RETURNS integer[] AS $$
 DECLARE
     array integer[];
 BEGIN
          array := $1;
  FOR i IN 1..10 LOOP
     array[i] := i+9;
     END LOOP;
     RETURN array;
 END;
 $$ LANGUAGE plpgsql;

 Porém está retornando o seguinte erro:

 psql:teste.sql:14: ERRO:  não pode mudar o tipo de retorno da função
 existente
 HINT:  Primeiro utilize DROP FUNCTION.

 P.S. Já coloquei um DROP FUNCTION teste_array() no começo da função, não
 acho necessário pq tem um REPLACE, mas em todo caso.



Tente:

CREATE OR REPLACE FUNCTION teste_array(inout array integer[]) AS $$
BEGIN
 FOR i IN 1..array_upper(array, 1) LOOP
array[i] := i+9;
END LOOP;
RETURN;
END;
$$ LANGUAGE plpgsql;

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] Array como parâmetro e retorno da m esma função

2010-03-09 Por tôpico Tiago Kepe



 Date: Tue, 9 Mar 2010 19:50:47 -0300
 From: osvaldo.kuss...@gmail.com
 To: pgbr-geral@listas.postgresql.org.br
 Subject: Re: [pgbr-geral] Array como parâmetro e retorno da mesma função
 
 Em 9 de março de 2010 19:29, Tiago Kepe tiagok...@hotmail.com escreveu:
  Oi pessoal,
 
  Preciso de ajuda, procurei na net e post antigos, mas não encontrei nada que
  me ajudasse.
 
  Preciso passar um array como parâmetro para uma função e ela me retornará o
  mesmo array alterado.
  Vi algumas explicações na net e a função atualmente está assim:
 
  CREATE OR REPLACE FUNCTION teste_array(integer[]) RETURNS integer[] AS $$
  DECLARE
  array integer[];
  BEGIN
   array := $1;
   FOR i IN 1..10 LOOP
  array[i] := i+9;
  END LOOP;
  RETURN array;
  END;
  $$ LANGUAGE plpgsql;
 
  Porém está retornando o seguinte erro:
 
  psql:teste.sql:14: ERRO:  não pode mudar o tipo de retorno da função
  existente
  HINT:  Primeiro utilize DROP FUNCTION.
 
  P.S. Já coloquei um DROP FUNCTION teste_array() no começo da função, não
  acho necessário pq tem um REPLACE, mas em todo caso.
 
 
 
 Tente:
 
 CREATE OR REPLACE FUNCTION teste_array(inout array integer[]) AS $$
 BEGIN
  FOR i IN 1..array_upper(array, 1) LOOP
 array[i] := i+9;
 END LOOP;
 RETURN;
 END;
 $$ LANGUAGE plpgsql;
 
 Osvaldo

Não funcionou, dá erro de sintaxe.
  
_
Quer transformar suas fotos em emoticons para Messenger? Conheça o I Love 
Messenger.
http://ilm.windowslive.com.br/?ocid=ILM:ILM:Hotmail:Tagline:1x1:Tagline___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] variavel com nome variavel]

2010-03-09 Por tôpico Osvaldo Kussama
Em 9 de março de 2010 18:21, flavio fla...@atttransbordo.com.br escreveu:
 Creio que seu comando esteja incompleto, talvez seja algo do tipo:

 EXECUTE
   'SELECT ' || quote_ident(nome_campo) || ' FROM ' ||
 quote_ident(sua_tabela) || ' WHERE '  || quote_ident (seu_campo) || '
 = ' || quote_literal(valor)
 INTO valor_rec;

 repare que é
 EXECUTE
   'string com o comando a ser executado'

 Osvaldo

 Eu faço uma consulta com FOR LOOP
                        FOR mov_rec IN
                                EXECUTE ''SELECT * ''
                                        || '' FROM ''
                                        || contratos_fat_rec.nome_tabela_1
                                        || '' WHERE id_contrato = ''
                                        || contratos_fat_rec.id_contrato
                        LOOP

 O problema é que eu preciso pegar os valores retornados cujo nome eu tenho que
 montar dentro de outro loop em um array que contem os nomes dos campos para o 
 record 'mov_rec'.

 mov_rec + nome_campo_array

 Assim:

 mov_rec.id_contrato
 mov_rec.ticket
 mov_rec.veiculo
 ...

 para pegar o valor eu posso usar

 select mov_rec.id_contrato into valor;

 O problema é que a parte 'id_contrato' vem do loop no array com os nomes, 
 então o que eu tinha achado
 no manual era o comando EXECUTE para fazer o comando dinamico.
 Por isso eu estou tentando assim:

 EXECUTE ''select mov_rec'' || ''.'' || nome_campo_array INTO valor_rec;

 mas parece que dentro do EXECUTE nao é reconhecido o 'mov_rec', é a impressao 
 que dá...
 Talvez tenha outra maneira de pegar os valores mas nao encontrei.

 Não sei se me expressei bem, mas obrigado pela atenção, se tiver mais alguma 
 dica...


Não está claro o que você deseja.
Quando você coloca:
select mov_rec.id_contrato into valor;
você está fazendo apenas uma atribuição que poderia ser feita simplesmente:
valor := mov_rec.id_contrato;

Aí você fala de um array mas o comando que você apresenta não tem
nenhum subscrito. Talvez:
EXECUTE 'SELECT mov_rec.' || nome_campo_array[i] INTO valor_rec;
supondo que  nome_campo_array[i] contenha o nome do campo do qual você
deseja obter o valor, por ex. id_contrato. É isso?

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] Array como parâmetro e retorno da m esma função

2010-03-09 Por tôpico Osvaldo Kussama
Em 9 de março de 2010 19:59, Tiago Kepe tiagok...@hotmail.com escreveu:


 Date: Tue, 9 Mar 2010 19:50:47 -0300
 From: osvaldo.kuss...@gmail.com
 To: pgbr-geral@listas.postgresql.org.br
 Subject: Re: [pgbr-geral] Array como parâmetro e retorno da mesma função

 Em 9 de março de 2010 19:29, Tiago Kepe tiagok...@hotmail.com escreveu:
  Oi pessoal,
 
  Preciso de ajuda, procurei na net e post antigos, mas não encontrei nada
  que
  me ajudasse.
 
  Preciso passar um array como parâmetro para uma função e ela me
  retornará o
  mesmo array alterado.
  Vi algumas explicações na net e a função atualmente está assim:
 
  CREATE OR REPLACE FUNCTION teste_array(integer[]) RETURNS integer[] AS
  $$
  DECLARE
      array integer[];
  BEGIN
           array := $1;
   FOR i IN 1..10 LOOP
      array[i] := i+9;
      END LOOP;
      RETURN array;
  END;
  $$ LANGUAGE plpgsql;
 
  Porém está retornando o seguinte erro:
 
  psql:teste.sql:14: ERRO:  não pode mudar o tipo de retorno da função
  existente
  HINT:  Primeiro utilize DROP FUNCTION.
 
  P.S. Já coloquei um DROP FUNCTION teste_array() no começo da função, não
  acho necessário pq tem um REPLACE, mas em todo caso.
 


 Tente:

 CREATE OR REPLACE FUNCTION teste_array(inout array integer[]) AS $$
 BEGIN
 FOR i IN 1..array_upper(array, 1) LOOP
 array[i] := i+9;
 END LOOP;
 RETURN;
 END;
 $$ LANGUAGE plpgsql;

 Osvaldo

 Não funcionou, dá erro de sintaxe.



Qual versão do PostgreSQL você está usando?

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] Array como parâmetro e retorno da m esma função

2010-03-09 Por tôpico Tiago Kepe



 Date: Tue, 9 Mar 2010 20:01:42 -0300
 From: osvaldo.kuss...@gmail.com
 To: pgbr-geral@listas.postgresql.org.br
 Subject: Re: [pgbr-geral] Array como parâmetro e retorno da mesma função
 
 Em 9 de março de 2010 19:59, Tiago Kepe tiagok...@hotmail.com escreveu:
 
 
  Date: Tue, 9 Mar 2010 19:50:47 -0300
  From: osvaldo.kuss...@gmail.com
  To: pgbr-geral@listas.postgresql.org.br
  Subject: Re: [pgbr-geral] Array como parâmetro e retorno da mesma função
 
  Em 9 de março de 2010 19:29, Tiago Kepe tiagok...@hotmail.com escreveu:
   Oi pessoal,
  
   Preciso de ajuda, procurei na net e post antigos, mas não encontrei nada
   que
   me ajudasse.
  
   Preciso passar um array como parâmetro para uma função e ela me
   retornará o
   mesmo array alterado.
   Vi algumas explicações na net e a função atualmente está assim:
  
   CREATE OR REPLACE FUNCTION teste_array(integer[]) RETURNS integer[] AS
   $$
   DECLARE
   array integer[];
   BEGIN
array := $1;
FOR i IN 1..10 LOOP
   array[i] := i+9;
   END LOOP;
   RETURN array;
   END;
   $$ LANGUAGE plpgsql;
  
   Porém está retornando o seguinte erro:
  
   psql:teste.sql:14: ERRO:  não pode mudar o tipo de retorno da função
   existente
   HINT:  Primeiro utilize DROP FUNCTION.
  
   P.S. Já coloquei um DROP FUNCTION teste_array() no começo da função, não
   acho necessário pq tem um REPLACE, mas em todo caso.
  
 
 
  Tente:
 
  CREATE OR REPLACE FUNCTION teste_array(inout array integer[]) AS $$
  BEGIN
  FOR i IN 1..array_upper(array, 1) LOOP
  array[i] := i+9;
  END LOOP;
  RETURN;
  END;
  $$ LANGUAGE plpgsql;
 
  Osvaldo
 
  Não funcionou, dá erro de sintaxe.
 
 
 
 Qual versão do PostgreSQL você está usando?
 
 Osvaldo

A versão eh 8.3.
O erro ocorre quando eu passo um vetor como parâmetro e retorno um vetor,  
mesmo que eu não manipule esse vetor na função, fiz um teste assim, deixo um 
vetor como parâmetro, não faço nada com esse vetor na função, dai retorno outro 
vetor que eh um variável interna, mas ele nem compila:

CREATE OR REPLACE FUNCTION teste_array(vetor integer[]) RETURNS integer[] AS $$
DECLARE
array integer[];
BEGIN
FOR i IN 1..10 LOOP
array[i] := i+9;
END LOOP;
RETURN array;
END;
$$ LANGUAGE plpgsql;

Mas  já consegui resolver por aki para o meu problema, eu não passei
mais o array como parâmetro, agora só estou retornando um array, ficou
assim:



CREATE OR REPLACE FUNCTION teste_array() RETURNS integer[] AS $$

DECLARE

array integer[];

BEGIN

FOR i IN 1..10 LOOP

array[i] := i+9;

END LOOP;

RETURN array;

END;

$$ LANGUAGE plpgsql;

Passando um vetor e alterando ele na função, ainda não consegui fazer, para o 
meu caso está resolvido, contudo, acredito que seria interessando repassar as 
soluções para ajudar a comunidade.

Obrigado,

Tiago Kepe.





  
_
Navegue sem medo: O Internet Explorer 8 te deixa mais protegido. Baixe 
gratuitamente.
http://go.microsoft.com/?linkid=9707132___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Array como parâmetro e retorno da m esma função

2010-03-09 Por tôpico Osvaldo Kussama
Em 9 de março de 2010 22:19, Tiago Kepe tiagok...@hotmail.com escreveu:

 A versão eh 8.3.
 O erro ocorre quando eu passo um vetor como parâmetro e retorno um vetor,
 mesmo que eu não manipule esse vetor na função, fiz um teste assim, deixo um
 vetor como parâmetro, não faço nada com esse vetor na função, dai retorno
 outro vetor que eh um variável interna, mas ele nem compila:

 CREATE OR REPLACE FUNCTION teste_array(vetor integer[]) RETURNS integer[] AS
 $$
 DECLARE
     array integer[];
 BEGIN
     FOR i IN 1..10 LOOP
     array[i] := i+9;
     END LOOP;
     RETURN array;
 END;
 $$ LANGUAGE plpgsql;

 Mas  já consegui resolver por aki para o meu problema, eu não passei mais o
 array como parâmetro, agora só estou retornando um array, ficou assim:

 CREATE OR REPLACE FUNCTION teste_array() RETURNS integer[] AS $$
 DECLARE
     array integer[];
 BEGIN
     FOR i IN 1..10 LOOP
     array[i] := i+9;
     END LOOP;
     RETURN array;
 END;
 $$ LANGUAGE plpgsql;

 Passando um vetor e alterando ele na função, ainda não consegui fazer, para
 o meu caso está resolvido, contudo, acredito que seria interessando repassar
 as soluções para ajudar a comunidade.



Aqui funcionou:

bdteste=# CREATE OR REPLACE FUNCTION teste_array(inout _array integer[]) AS $$
bdteste$# BEGIN
bdteste$# FOR i IN 1..array_upper(_array, 1) LOOP
bdteste$#_array[i] := _array[i]+9;
bdteste$#END LOOP;
bdteste$#RETURN;
bdteste$# END;
bdteste$# $$ LANGUAGE plpgsql;
CREATE FUNCTION

bdteste=# SELECT teste_array(ARRAY[1,2,3,4,5]);
   teste_array
--
 {10,11,12,13,14}
(1 registro)

Osvaldo
PS.: note que array é palavra reservada.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral