[pgbr-geral] Função que retorna genericamente o resultado de um SELECT qualquer

2009-05-18 Por tôpico Newton Teixeira do Nascimento Júnior

Olá comunidade,

 

Como fazer uma função retornar genericamente o resultado de um SELECT qualquer? 
(PostgreSql 8.2.4 + CentOS 4.5)

 

Por exemplo, quando executo o seguinte comando select 
fs_select_registros_pts_invalidos(current_date);

O seguinte erro é retornado:

 

ERRO:  função que tem argumento do tipo conjunto foi chamada em um contexto que 
não pode aceitar um conjunto

CONTEXT:  PL/pgSQL function fs_select_registros_pts_invalidos line 58 at 
return next

 

** Erro **

 

ERRO: função que tem argumento do tipo conjunto foi chamada em um contexto que 
não pode aceitar um conjunto

SQL state: 0A000

Contexto: PL/pgSQL function fs_select_registros_pts_invalidos line 58 at 
return next

 

Isso porque não existe uma tabela com a mesma estrutura (campos) que o select 
retorna, uma vez que retorna 

campos oriundos de junções de outras tabelas. 

Como fazer uma função retornar um select sem que ter criar uma tabela ou view 
para os resultados desse select ?

 

Eis a função (exemplo) :

 

CREATE OR REPLACE FUNCTION fs_select_registros_pts_invalidos(data date)

  RETURNS SETOF record AS

$BODY$

 

DECLARE

 

sql varchar;

str_return varchar;

str_hora_integridade varchar;

 

data_aux date;

 

r RECORD;

record_aux RECORD;

 

chave boolean;

flag boolean;

 

 

BEGIN

 

chave=true;

data_aux = data;

 

WHILE (chave = true) LOOP

sql = 'SELECT MAX(B.BH_DTHR) AS resultado FROM PAS_R A, BHPAS_H_' 
|| replace(CAST(data_aux AS character varying(300)), '-','_') || 

' B where A.BH_CHAVE=B.BH_CHAVE AND B.BH_VARIACAO=0 AND 
B.BH_CHAVE IN 

(SELECT BH_CHAVE FROM PAS_R WHERE ID =  ''ACBR701VBV'') 
GROUP BY A.ID';

 

flag = false;

FOR record_aux IN EXECUTE sql LOOP

flag = true;

str_hora_integridade = record_aux.resultado; 

str_hora_integridade = substring(record_aux.resultado 
from 11 for 18); 

str_hora_integridade = substring(str_hora_integridade 
from 1 for 9); 

str_hora_integridade = trim(str_hora_integridade);

END LOOP;  

 

if ( flag = false) THEN

data_aux = data_aux - 1;   

ELSE

chave = false;

END IF;

 

END LOOP;

 

sql = 'SELECT a.id, a.nome, TO_CHAR(b.bh_dthr,''DD/MM/ HH24:MI'') as data, 
b.bh_variacao, b.estado, 

   (b.estado::bit(14)  1::bit(14))::INTEGER as af,

   (b.estado::bit(14)  2::bit(14))::INTEGER as fovar,

   (b.estado::bit(14)  4::bit(14))::INTEGER as falha,

   (b.estado::bit(14)  8::bit(14))::INTEGER as ivorg,

   (b.estado::bit(14)  16::bit(14))::INTEGER as maorg,

   (b.estado::bit(14)  32::bit(14))::INTEGER as manua,

   (b.estado::bit(14)  64::bit(14))::INTEGER as ninci

FROM pds_r a, bhpds_h_'  || replace(CAST(data_aux AS character 
varying(300)), '-','_') || ' b  WHERE a.bh_chave=b.bh_chave AND

(b.estado::bit(14)  8::bit(14))::INTEGER  0 AND  bh_dthr = ''' || 
data_aux || ' ' || str_hora_integridade || '''

GROUP BY a.id, a.nome, b.estado, b.bh_dthr, b.bh_variacao ORDER BY 
id, bh_dthr';

 

 

FOR r IN EXECUTE sql LOOP

RETURN NEXT r;

END LOOP;

 

RETURN;

 

END; $BODY$

  LANGUAGE 'plpgsql' VOLATILE;

 

 

 

 

 



html
body
font face = arial size = 1 color = #80Aviso:brO emitente desta 
mensagem eacute; responsaacute;vel por seu conteuacute;do e 
endereccedil;amento. Cabe ao destinataacute;rio cuidar quanto ao tratamento 
adequado. Sem a devida autorizaccedil;atilde;o, a divulgaccedil;atilde;o, a 
reproduccedil;atilde;o, a distribuiccedil;atilde;o ou qualquer outra 
accedil;atilde;o em desconformidade com as normas internas da ELETRONORTE S/A 
satilde;o proibidas e passiacute;veis de sanccedil;atilde;o disciplinar, 
ciacute;vel e criminal. Esta mensagem pode ser monitorada.
/font
/body
/html___
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 PostgreeSQL - Conexao Bando de Dados

2009-05-18 Por tôpico Danilo Mateus Oliveira
Bom Dia Comunidade,

Fiz a instalação do PostgreeSQL (Windows) sem problemas, mas quando vou 
conectar no Bando de Dados, aparece que não é possível conectar no servidor. 
Como faço para solucionar este problema..

O erro que aparece é:
Server doesn't listen

The server doesn' t accept connections the connection library reports

could not connect to server: Connection refused (0x274D/10061). Is the 
server running on host 127.0.0.1 and accepting TCP/IP connection on port 
5432?

O servidor que estou tentando conectar é na propria maquina (LOCALHOST).

Obrigado

Danilo M.C. Oliveira


  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] Instalação PostgreeSQL - Conexao Bando de Dados

2009-05-18 Por tôpico Newton Teixeira do Nascimento Júnior

Danilo, verifique se o serviço do Postgres está rodando no Windows. Se não 
tiver, inicialize o serviço.

Verifique se você está tentando conectar na porta que você definiu na 
instalação.

Outra coisa é verificar se o usuário que você está tentando conectar é um 
usuário autorizado para acessar o banco.

 

Eis um link - 
http://agajorte.blogspot.com/2009/03/meu-postgresql-nao-conecta.html

 

Att. 

 

- Newton Teixeira

 



html
body
font face = arial size = 1 color = #80Aviso:brO emitente desta 
mensagem eacute; responsaacute;vel por seu conteuacute;do e 
endereccedil;amento. Cabe ao destinataacute;rio cuidar quanto ao tratamento 
adequado. Sem a devida autorizaccedil;atilde;o, a divulgaccedil;atilde;o, a 
reproduccedil;atilde;o, a distribuiccedil;atilde;o ou qualquer outra 
accedil;atilde;o em desconformidade com as normas internas da ELETRONORTE S/A 
satilde;o proibidas e passiacute;veis de sanccedil;atilde;o disciplinar, 
ciacute;vel e criminal. Esta mensagem pode ser monitorada.
/font
/body
/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] Instalação PostgreeSQL - Conexao Bando de Dados

2009-05-18 Por tôpico armando oliveira
É por causa do usuário windows, postgres   : suamaquina/postgres

2009/5/18 Danilo Mateus Oliveira danilo...@yahoo.com.br

 Bom Dia Comunidade,

 Fiz a instalação do PostgreeSQL (Windows) sem problemas, mas quando vou
 conectar no Bando de Dados, aparece que não é possível conectar no servidor.
 Como faço para solucionar este problema.

 O erro que aparece é:
 Server doesn't listen

 The server doesn' t accept connections the connection library reports

 could not connect to server: Connection refused (0x274D/10061). Is the
 server running on host 127.0.0.1 and accepting TCP/IP connection on port
 5432?

 O servidor que estou tentando conectar é na propria maquina (LOCALHOST).

 Obrigado

 Danilo M.C. Oliveira




 --
 Veja quais são os assuntos do momento no Yahoo! + Buscados: Top 
 10http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/-
 Celebridadeshttp://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/celebridades/-
 Músicahttp://br..rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/m%C3%BAsica/-
 Esporteshttp://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/esportes/

 ___
 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 que retorna genericamente o resultado de um SELECT qualquer

2009-05-18 Por tôpico JotaComm
Olá,

2009/5/18 Newton Teixeira do Nascimento Júnior 
newton.jun...@eletronorte.gov.br

  Olá comunidade,



 Como fazer uma função retornar genericamente o resultado de um SELECT
 qualquer? (PostgreSql 8.2.4 + CentOS 4.5)

Acho que um SELECT version(); resolve o seu problema.




 Por exemplo, quando executo o seguinte comando select
 fs_select_registros_pts_invalidos(current_date);

 O seguinte erro é retornado:



 ERRO:  função que tem argumento do tipo conjunto foi chamada em um contexto
 que não pode aceitar um conjunto

 CONTEXT:  PL/pgSQL function fs_select_registros_pts_invalidos line 58 at
 return next


Isso acontece porque o retorno de sua função está definido com SETOF e você
está chamando a função no seguinte formato: SELECT
nome_da_funcao(parametros); enquanto que a função deve ser chamada no
formato: SELECT * FROM nome_da_funcao(parametros);



 ** Erro **



 ERRO: função que tem argumento do tipo conjunto foi chamada em um contexto
 que não pode aceitar um conjunto

 SQL state: 0A000

 Contexto: PL/pgSQL function fs_select_registros_pts_invalidos line 58 at
 return next



 Isso porque não existe uma tabela com a mesma estrutura (campos) que o
 select retorna, uma vez que retorna

 campos oriundos de junções de outras tabelas.

 Como fazer uma função retornar um select sem que ter criar uma tabela ou
 view para os resultados desse select ?



 Eis a função (exemplo) :



 CREATE OR REPLACE FUNCTION fs_select_registros_pts_invalidos(data date)

   RETURNS SETOF record AS

 $BODY$



 DECLARE



 sql varchar;

 str_return varchar;

 str_hora_integridade varchar;



 data_aux date;



 r RECORD;

 record_aux RECORD;



 chave boolean;

 flag boolean;





 BEGIN



 chave=true;

 data_aux = data;



 WHILE (chave = true) LOOP

 sql = 'SELECT MAX(B.BH_DTHR) AS resultado FROM PAS_R A,
 BHPAS_H_' || replace(CAST(data_aux AS character varying(300)), '-','_') ||

 ' B where A.BH_CHAVE=B.BH_CHAVE AND B.BH_VARIACAO=0
 AND B.BH_CHAVE IN

 (SELECT BH_CHAVE FROM PAS_R WHERE ID =
 ''ACBR701VBV'') GROUP BY A.ID';



 flag = false;

 FOR record_aux IN EXECUTE sql LOOP

 flag = true;

 str_hora_integridade = record_aux.resultado;

 str_hora_integridade =
 substring(record_aux.resultado from 11 for 18);

 str_hora_integridade =
 substring(str_hora_integridade from 1 for 9);

 str_hora_integridade = trim(str_hora_integridade);

 END LOOP;



 if ( flag = false) THEN

 data_aux = data_aux - 1;

 ELSE

 chave = false;

 END IF;



 END LOOP;



 sql = 'SELECT a.id, a.nome, TO_CHAR(b.bh_dthr,''DD/MM/ HH24:MI'') as
 data, b.bh_variacao, b.estado,

(b.estado::bit(14)  1::bit(14))::INTEGER as af,

(b.estado::bit(14)  2::bit(14))::INTEGER as fovar,

(b.estado::bit(14)  4::bit(14))::INTEGER as falha,

(b.estado::bit(14)  8::bit(14))::INTEGER as ivorg,

(b.estado::bit(14)  16::bit(14))::INTEGER as maorg,

(b.estado::bit(14)  32::bit(14))::INTEGER as manua,

(b.estado::bit(14)  64::bit(14))::INTEGER as ninci

 FROM pds_r a, bhpds_h_'  || replace(CAST(data_aux AS character
 varying(300)), '-','_') || ' b  WHERE a.bh_chave=b.bh_chave AND

 (b.estado::bit(14)  8::bit(14))::INTEGER  0 AND  bh_dthr =
 ''' || data_aux || ' ' || str_hora_integridade || '''

 GROUP BY a.id, a.nome, b.estado, b.bh_dthr, b.bh_variacao
 ORDER BY id, bh_dthr';





 FOR r IN EXECUTE sql LOOP

 RETURN NEXT r;

 END LOOP;



 RETURN;



 END; $BODY$

   LANGUAGE 'plpgsql' VOLATILE;












 Aviso:
 O emitente desta mensagem é responsável por seu conteúdo e endereçamento.
 Cabe ao destinatário cuidar quanto ao tratamento adequado. Sem a devida
 autorização, a divulgação, a reprodução, a distribuição ou qualquer outra
 ação em desconformidade com as normas internas da ELETRONORTE S/A são
 proibidas e passíveis de sanção disciplinar, cível e criminal. Esta mensagem
 pode ser monitorada.




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



Espero ter ajudado.

[]s
-- 
JotaComm
http://jotacomm.wordpress.com
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] Função que retorna genericamente o resultado de um SELECT qualquer

2009-05-18 Por tôpico Newton Teixeira do Nascimento Júnior

Jota, fiz da forma que você indicou [ select * from 
fs_select_registros_pts_invalidos(current_date); ] e o postgres retornou o 
seguinte erro:

 

ERRO:  uma lista de definição de colunas é requerida para funções que retornam 
record

 

** Erro **

 

ERRO: uma lista de definição de colunas é requerida para funções que retornam 
record

SQL state: 42601

 

 

O que eu devo alterar para funcionar sem ter que criar uma tabela ou view no 
banco ?

 

 

 

 



html
body
font face = arial size = 1 color = #80Aviso:brO emitente desta 
mensagem eacute; responsaacute;vel por seu conteuacute;do e 
endereccedil;amento. Cabe ao destinataacute;rio cuidar quanto ao tratamento 
adequado. Sem a devida autorizaccedil;atilde;o, a divulgaccedil;atilde;o, a 
reproduccedil;atilde;o, a distribuiccedil;atilde;o ou qualquer outra 
accedil;atilde;o em desconformidade com as normas internas da ELETRONORTE S/A 
satilde;o proibidas e passiacute;veis de sanccedil;atilde;o disciplinar, 
ciacute;vel e criminal. Esta mensagem pode ser monitorada.
/font
/body
/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] Função que retorna genericamente o resultado de um SELECT qualquer

2009-05-18 Por tôpico Jean Pereira
Tente usar

select * from fs_select_registros_pts_invalidos(current_date);

-- 
--
Jean Pereira
Fone: (+5547)91595876
Email: jean.pereira@gmail.com
   j...@lug-br.com
Linux User #480772
--

___
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 que retorna genericamente o resultado de um SELECT qualquer

2009-05-18 Por tôpico André Volpato




Newton Teixeira do Nascimento Jnior escreveu:

  
  
  
  
  Jota, fiz da forma que
voc indicou [ select * from
fs_select_registros_pts_invalidos(current_date); ] e o postgres
retornou o
seguinte erro:
  
  ERRO: uma lista de
definio de colunas  requerida para
funes que retornam "record"
  
  ** Erro **
  
  ERRO: uma lista de
definio de colunas  requerida para
funes que retornam "record"
  SQL state: 42601
  
  
  O que eu devo alterar
para funcionar sem ter que criar uma
tabela ou view no banco ?
  
  


At onde eu sei, voc no pode fazer isso.

J tive essa necessidade vrias vezes, e a soluo no meu caso foi
criar tabelas dinmicas a partir de selects, utilizando a aplicao
mesmo.


-- 

[]s,

Andr Volpato




___
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 que retorna genericamente o resultado de um SELECT qualquer

2009-05-18 Por tôpico JotaComm
Olá, Newton

Agora o problema é outro. Este problema é porque o retorno sua função é um
record correto?

Para resolver este problema você tem que fazer a chamada da função da
seguinte maneira:

SELECT * FROM nome_da_funcao(parametros)
AS foo(foo int, nome text));

Supondo que você retorna uma tabela chamada foo com dois campos, sendo um do
tipo int e outro do tipo text.

Assim você consegue fazer o que você quer.

2009/5/18 Newton Teixeira do Nascimento Júnior 
newton.jun...@eletronorte.gov.br

  Jota, fiz da forma que você indicou [ select * from
 fs_select_registros_pts_invalidos(current_date); ] e o postgres retornou o
 seguinte erro:



 ERRO:  uma lista de definição de colunas é requerida para funções que
 retornam record



 ** Erro **



 ERRO: uma lista de definição de colunas é requerida para funções que
 retornam record

 SQL state: 42601





 O que eu devo alterar para funcionar sem ter que criar uma tabela ou view
 no banco ?










 Aviso:
 O emitente desta mensagem é responsável por seu conteúdo e endereçamento.
 Cabe ao destinatário cuidar quanto ao tratamento adequado. Sem a devida
 autorização, a divulgação, a reprodução, a distribuição ou qualquer outra
 ação em desconformidade com as normas internas da ELETRONORTE S/A são
 proibidas e passíveis de sanção disciplinar, cível e criminal. Esta mensagem
 pode ser monitorada.




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



[]s
-- 
JotaComm
http://jotacomm.wordpress.com
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] Função que retorna genericamente o resultado de um SELECT qualquer

2009-05-18 Por tôpico André Volpato
JotaComm escreveu:
 Olá, Newton

 Agora o problema é outro. Este problema é porque o retorno sua função 
 é um record correto?

 Para resolver este problema você tem que fazer a chamada da função da 
 seguinte maneira:

 SELECT * FROM nome_da_funcao(parametros)
 AS foo(foo int, nome text));

 Supondo que você retorna uma tabela chamada foo com dois campos, sendo 
 um do tipo int e outro do tipo text.

 Assim você consegue fazer o que você quer.


Jota, tudo certo?

Fiz uns testes aqui e gostaria de esclarecer se é possível retornar um 
tipo realmente gernérico, sem ter que recriar a função toda hora:

create or replace function retornafoo ()
returns setof record as
$body$
declare   
saidarecord;
begin
for saida in
select 1::integer as foo,
'andre'::text as nome ,
now()::date as hoje
loop
return next saida;
end loop;
end;
$body$
language 'plpgsql';

Dessa maneira consigo retornar os 3 campos definidos :
select * from retornafoo() as (foo int, nome text, hoje date);

Mas como eu poderia retornar, por exemplo, apenas o campo hoje date()? 
Ou então, se eu quisesse retornar um outro tipo de campo, eu teria que 
recriar a função?

select foo from retornafoo() as (foo int);
ERROR:  wrong record type supplied in RETURN NEXT

-- 

[]´s,

André Volpato



___
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 que retorna genericamente o resultado de um SELECT qualquer

2009-05-18 Por tôpico Fabrízio de Royes Mello
2009/5/18 André Volpato andre.volp...@ecomtecnologia.com.br


 Fiz uns testes aqui e gostaria de esclarecer se é possível retornar um
 tipo realmente gernérico, sem ter que recriar a função toda hora:

 create or replace function retornafoo ()
 returns setof record as
 $body$
declare
saidarecord;
begin
for saida in
select 1::integer as foo,
'andre'::text as nome ,
now()::date as hoje
loop
return next saida;
end loop;
end;
 $body$
 language 'plpgsql';

 Dessa maneira consigo retornar os 3 campos definidos :
 select * from retornafoo() as (foo int, nome text, hoje date);

 Mas como eu poderia retornar, por exemplo, apenas o campo hoje date()?
 Ou então, se eu quisesse retornar um outro tipo de campo, eu teria que
 recriar a função?

 select foo from retornafoo() as (foo int);
 ERROR:  wrong record type supplied in RETURN NEXT


Amigo André,

Desculpe me intrometer no assunto, mas o caso é que uma Função que retorna
um RecordSet é como se fosse uma Relação (aka tabela) e esta permanece
inalterada ao efetuar uma recuperação dos registros.

Para o que você deseja bastaria um (se eu entendi bem):

SELECT hoje FROM refornafoo() AS (foo INTEGER, nomeTEXT, hoje DATE);


Para facilitar a vida voce poderia criar um tipo para o retorno dessa
função:

CREATE TYPE tp_foo AS (foo int, nome text, hoje date);


E logo após modificar o retorno da tua funçao pra utilizar esse tipo:

create or replace function retornafoo ()
returns setof tp_foo as
$body$
   declare
   saidarecord;
   begin
   for saida in
   select 1::integer as foo,
   'andre'::text as nome ,
   now()::date as hoje
   loop
   return next saida;
   end loop;
   end;
$body$
language 'plpgsql';

Com isso vc não precisa definir o RecordSet no seu Select, fazendo somente:

SELECT foo FROM retornafoo();

ou

SELECT hoje FROM retornafoo();


Cordialmente,

-- 
Fabrízio de Royes Mello
 Blog sobre PostgreSQL: 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] Função que retorna genericamente o resultado de um SELECT qualquer

2009-05-18 Por tôpico André Volpato




Fabrzio de Royes Mello escreveu:

  2009/5/18 Andr Volpato andre.volp...@ecomtecnologia.com.br
(...)
  
Amigo Andr,
  
Desculpe me intrometer no assunto, mas o caso  que uma Funo que
retorna um RecordSet  como se fosse uma Relao (aka tabela) e esta
permanece inalterada ao efetuar uma recuperao dos registros. 
  
Para o que voc deseja bastaria um (se eu entendi bem):
  
SELECT hoje FROM refornafoo() AS (foo INTEGER, nomeTEXT, hoje DATE);
  


Ento somos dois intrusos :)
Obrigado pela explicao.


Para facilitar a vida voce poderia criar um tipo para o retorno dessa
funo:
  
CREATE TYPE tp_foo AS (foo int, nome text, hoje date);
  
  
E logo aps modificar o retorno da tua funao pra utilizar esse tipo:
  
(...)

Eu estava procurando uma maneira de gerar uma sada de funo dinmica,
sem precisar redefinir objetos no banco.
No meu caso, os tipos de dados podem variar muito, ento no seria
funcional nem com record (setof retord) nem com types (setof tipo).
Em todos os casos, voc estar "preso" aos tipos definidos na funo ou
no tipo.

-- 

[]s,

Andr Volpato




___
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 conceitual em select

2009-05-18 Por tôpico Sidnei Vladisauskis
Fala pessoal,

Estou com uma dúvida conceitual para fazer um select

Vamos lá:

tenho uma tabela produtos onde tenho
id
name
loja_id

e tenho uma tabela loja onde tenho
loja_id
name


Tenho produtos que possuem em duas lojas, por exemplo:
tv lcd lg 29

ela está dentro de produtos duas vezes

Tabela produtos
| id |  name  | loja_id
| 1  | tv lcd lg 29 | 1
| 2  | tv lcd lg 29 | 2

Quando faço select * from produtos tenho todos os resultados.

Como eu rotorno o seguinte?

|  name  | lojas
| tv lcd lg 29 | 1,2

Tem como?

Se eu der group by name ele pede id tb, e ai dá na mesma...

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] Dúvida conceitual em select

2009-05-18 Por tôpico Lucas Souza
2009/5/18 Sidnei Vladisauskis sid...@v7v.com.br

 Fala pessoal,

 Estou com uma dúvida conceitual para fazer um select

 Vamos lá:

 tenho uma tabela produtos onde tenho
 id
 name
 loja_id

 e tenho uma tabela loja onde tenho
 loja_id
 name


 Tenho produtos que possuem em duas lojas, por exemplo:
 tv lcd lg 29

 ela está dentro de produtos duas vezes

 Tabela produtos
 | id |  name  | loja_id
 | 1  | tv lcd lg 29 | 1
 | 2  | tv lcd lg 29 | 2


desta forma você esta replicando dados desnecessariamente,

o correto seria uma 3º entidade para associar o produto a loja assim...

(exemplo) tabela produto_relacao_loja

loja_id (PK, FK)
produto_id (PK, FK)
estoque
preco





 Quando faço select * from produtos tenho todos os resultados.

 Como eu rotorno o seguinte?

 |  name  | lojas
 | tv lcd lg 29 | 1,2

 Tem como?

 Se eu der group by name ele pede id tb, e ai dá na mesma...

 Obrigado

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




-- 

Lucas de Souza D'Ávila
Graduando em Sistema de Informação - CV Lattes:
http://lattes.cnpq.br/9245658982061645

http://merendas.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] Dúvida conceitual em select

2009-05-18 Por tôpico Osvaldo Kussama
2009/5/18 Lucas Souza lucassouzadav...@gmail.com:


 2009/5/18 Sidnei Vladisauskis sid...@v7v.com.br

 Fala pessoal,

 Estou com uma dúvida conceitual para fazer um select

 Vamos lá:

 tenho uma tabela produtos onde tenho
 id
 name
 loja_id

 e tenho uma tabela loja onde tenho
 loja_id
 name


 Tenho produtos que possuem em duas lojas, por exemplo:
 tv lcd lg 29

 ela está dentro de produtos duas vezes

 Tabela produtos
 | id |  name  | loja_id
 | 1  | tv lcd lg 29 | 1
 | 2  | tv lcd lg 29 | 2

 desta forma você esta replicando dados desnecessariamente,

 o correto seria uma 3º entidade para associar o produto a loja assim...

 (exemplo) tabela produto_relacao_loja

 loja_id (PK, FK)
 produto_id (PK, FK)
 estoque
 preco




 Quando faço select * from produtos tenho todos os resultados.

 Como eu rotorno o seguinte?

 |      name      | lojas
 | tv lcd lg 29 | 1,2

 Tem como?

 Se eu der group by name ele pede id tb, e ai dá na mesma...



Além do excelente e apropriado conselho do Lucas você pode usar,
especificamente para o select desejado, uma função de agregação.
Veja o exemplo array_accum em:
http://www.postgresql.org/docs/current/interactive/xaggr.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: Instalação PostgreeSQL - Conexao Bando de Dados

2009-05-18 Por tôpico Jean
Danilo,

 

De uma olhada no arquivo postgres.conf, no parâmetro listen_addresses,
coloque  = '*'.

 

Jean Domingues

 

De: Danilo Mateus Oliveira [mailto:danilo...@yahoo.com.br] 
Enviada em: segunda-feira, 18 de maio de 2009 10:00
Para: pgbr-geral@listas.postgresql.org.br
Assunto: [pgbr-geral] Instalação PostgreeSQL - Conexao Bando de Dados

 

Bom Dia Comunidade,

 

Fiz a instalação do PostgreeSQL (Windows) sem problemas, mas quando vou
conectar no Bando de Dados, aparece que não é possível conectar no servidor.
Como faço para solucionar este problema.

 

O erro que aparece é:

Server doesn't listen

 

The server doesn' t accept connections the connection library reports

 

could not connect to server: Connection refused (0x274D/10061). Is the
server running on host 127.0.0.1 and accepting TCP/IP connection on port
5432?

 

O servidor que estou tentando conectar é na propria maquina (LOCALHOST).

 

Obrigado

 

Danilo M.C. Oliveira

 

 

 

 

  _  

Veja quais são os assuntos do momento no Yahoo! + Buscados: Top
http://br.rd.yahoo.com/mail/taglines/mail/*http:/br.maisbuscados.yahoo.com/
  10 - Celebridades
http://br.rd.yahoo.com/mail/taglines/mail/*http:/br.maisbuscados.yahoo.com/
celebridades/  - Música
http://br..rd.yahoo.com/mail/taglines/mail/*http:/br.maisbuscados.yahoo.com
/m%C3%BAsica/  - Esportes
http://br.rd.yahoo.com/mail/taglines/mail/*http:/br.maisbuscados.yahoo.com/
esportes/ 

___
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 conceitual em select

2009-05-18 Por tôpico Sidnei Vladisauskis
O problema é que acho que minha tabela não pode ser desse jeito...

porque não tenho um produtos para várias lojas e sim um produto para cada
loja.

imaginem assim, tenho os produtos:
tv lcd lg 29 na loja 1
tv lcd lg 29 black piano na loja 2

o único detalhe que muda é a descrição...

mas na hora do select quero trazer tv lcd 29 e em que loja tem isso

+ou- como funciona o busca pé ou outro site do gênero.


2009/5/18 Osvaldo Kussama osvaldo.kuss...@gmail.com

 2009/5/18 Lucas Souza lucassouzadav...@gmail.com:
 
 
  2009/5/18 Sidnei Vladisauskis sid...@v7v.com.br
 
  Fala pessoal,
 
  Estou com uma dúvida conceitual para fazer um select
 
  Vamos lá:
 
  tenho uma tabela produtos onde tenho
  id
  name
  loja_id
 
  e tenho uma tabela loja onde tenho
  loja_id
  name
 
 
  Tenho produtos que possuem em duas lojas, por exemplo:
  tv lcd lg 29
 
  ela está dentro de produtos duas vezes
 
  Tabela produtos
  | id |  name  | loja_id
  | 1  | tv lcd lg 29 | 1
  | 2  | tv lcd lg 29 | 2
 
  desta forma você esta replicando dados desnecessariamente,
 
  o correto seria uma 3º entidade para associar o produto a loja assim...
 
  (exemplo) tabela produto_relacao_loja
 
  loja_id (PK, FK)
  produto_id (PK, FK)
  estoque
  preco
 
 
 
 
  Quando faço select * from produtos tenho todos os resultados.
 
  Como eu rotorno o seguinte?
 
  |  name  | lojas
  | tv lcd lg 29 | 1,2
 
  Tem como?
 
  Se eu der group by name ele pede id tb, e ai dá na mesma...
 


 Além do excelente e apropriado conselho do Lucas você pode usar,
 especificamente para o select desejado, uma função de agregação.
 Veja o exemplo array_accum em:
 http://www.postgresql.org/docs/current/interactive/xaggr.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 mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Dúvida conceitual em select

2009-05-18 Por tôpico Osvaldo Kussama
2009/5/18 Sidnei Vladisauskis sid...@v7v.com.br:
 O problema é que acho que minha tabela não pode ser desse jeito...

 porque não tenho um produtos para várias lojas e sim um produto para cada
 loja.

 imaginem assim, tenho os produtos:
 tv lcd lg 29 na loja 1
 tv lcd lg 29 black piano na loja 2

 o único detalhe que muda é a descrição...

 mas na hora do select quero trazer tv lcd 29 e em que loja tem isso

 +ou- como funciona o busca pé ou outro site do gênero.


 2009/5/18 Osvaldo Kussama osvaldo.kuss...@gmail.com

 2009/5/18 Lucas Souza lucassouzadav...@gmail.com:
 
 
  2009/5/18 Sidnei Vladisauskis sid...@v7v.com.br
 
  Fala pessoal,
 
  Estou com uma dúvida conceitual para fazer um select
 
  Vamos lá:
 
  tenho uma tabela produtos onde tenho
  id
  name
  loja_id
 
  e tenho uma tabela loja onde tenho
  loja_id
  name
 
 
  Tenho produtos que possuem em duas lojas, por exemplo:
  tv lcd lg 29
 
  ela está dentro de produtos duas vezes
 
  Tabela produtos
  | id |  name  | loja_id
  | 1  | tv lcd lg 29 | 1
  | 2  | tv lcd lg 29 | 2
 
  desta forma você esta replicando dados desnecessariamente,
 
  o correto seria uma 3º entidade para associar o produto a loja assim...
 
  (exemplo) tabela produto_relacao_loja
 
  loja_id (PK, FK)
  produto_id (PK, FK)
  estoque
  preco
 
 
 
 
  Quando faço select * from produtos tenho todos os resultados.
 
  Como eu rotorno o seguinte?
 
  |      name      | lojas
  | tv lcd lg 29 | 1,2
 
  Tem como?
 
  Se eu der group by name ele pede id tb, e ai dá na mesma...
 


 Além do excelente e apropriado conselho do Lucas você pode usar,
 especificamente para o select desejado, uma função de agregação.
 Veja o exemplo array_accum em:
 http://www.postgresql.org/docs/current/interactive/xaggr.html



Se isto for mesmo verdade eu diria que este é um caso único e
sui-generis de rede de lojas.
Imagine por ex. a livraria Saraiva em que cada loja da rede tivesse
seus próprios livros e que cada um deles não estivesse a venda em
nenhuma outra loja da rede. Me parece muito estranho e fora da
realidade.

Dê uma revisada em seu modelo conceitual de dados e leia um pouco
sobre normalização. Pode começar por aqui:
http://pt.wikipedia.org/wiki/Normaliza%C3%A7%C3%A3o_de_dados

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


[pgbr-geral] Dia do PostgreSQL em Floripa! (22/05)

2009-05-18 Por tôpico leonardo martins
A organização do Dia do PostgreSQL SC convida-os para este evento do
Banco de Dados livre mais avançado do mundo!

O evento será no Auditório do SENAI/SC [1], em Florianópolis, no dia
22/05/2009 das 09h00 às 18h00.

As chamadas de trabalhos para os Lightning Talks (Papo-leve) estão
abertas e se você tem interesse em palestrar, entre em contato com os
organizadores do do evento, pelo site [2]. As palestras devem ter de 5 à
20 minutos e precisam ser relacionadas ao tema do evento, no caso o
PostgreSQL. Não é necessário ter a apresentação em slide (lâminas), mas
se for apresentar somente serão aceitas palestras no formato PDF até 10
horas no dia (21/04) do evento. Você pode falar sobre uma experiência
com o PostgreSQL, um problema que esta enfrentando e como resolveu, ou
como acha que poderia resolver, ou um trabalho de conclusão de curso,
enfim, a idéia é expor e debater...

A descrição deve conter:
Nome Completo:
Título:
Resumo: (4 linhas no máximo)
As inscrições podem ser feitas através do formulário no site [3].

Abaixo temos a agenda do evento:

09:00 Abertura
09:30 Compreendendo o PostgreSQL
10:30 Replicação Assíncrona
12:00 Intervalo para almoço
13:30 Replicação Síncrona
15:00 Lightning Talks
15:30 Melhores Práticas JBOSS Hibernate e PostgreSQL
16:30 Migração Oracle para PostgreSQL
17:30 Encerramento

Se você não quiser palestrar ou participar dos Lightning Talks,
inscreva-se também e compareça no evento.

Não esqueça de trazer sua doação de alimentos ou produtos de higiene
pessoal que serão doados para uma instituição de caridade a ser
definida.

Participe!

[1] http://www.ctai.senai.sc.br
[2] http://www.postgresql.org.br/eventos/pgday/sc
[3] http://www.postgresql.org.br/eventos/pgday/sc/inscricao
___
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 conceitual em select

2009-05-18 Por tôpico Sidnei Vladisauskis
Vou dar uma lida e uma pensada melhor em tudo...

obrigado por enquanto

2009/5/18 Osvaldo Kussama osvaldo.kuss...@gmail.com

 2009/5/18 Sidnei Vladisauskis sid...@v7v.com.br:
  O problema é que acho que minha tabela não pode ser desse jeito...
 
  porque não tenho um produtos para várias lojas e sim um produto para cada
  loja.
 
  imaginem assim, tenho os produtos:
  tv lcd lg 29 na loja 1
  tv lcd lg 29 black piano na loja 2
 
  o único detalhe que muda é a descrição...
 
  mas na hora do select quero trazer tv lcd 29 e em que loja tem isso
 
  +ou- como funciona o busca pé ou outro site do gênero.
 
 
  2009/5/18 Osvaldo Kussama osvaldo.kuss...@gmail.com
 
  2009/5/18 Lucas Souza lucassouzadav...@gmail.com:
  
  
   2009/5/18 Sidnei Vladisauskis sid...@v7v.com.br
  
   Fala pessoal,
  
   Estou com uma dúvida conceitual para fazer um select
  
   Vamos lá:
  
   tenho uma tabela produtos onde tenho
   id
   name
   loja_id
  
   e tenho uma tabela loja onde tenho
   loja_id
   name
  
  
   Tenho produtos que possuem em duas lojas, por exemplo:
   tv lcd lg 29
  
   ela está dentro de produtos duas vezes
  
   Tabela produtos
   | id |  name  | loja_id
   | 1  | tv lcd lg 29 | 1
   | 2  | tv lcd lg 29 | 2
  
   desta forma você esta replicando dados desnecessariamente,
  
   o correto seria uma 3º entidade para associar o produto a loja
 assim...
  
   (exemplo) tabela produto_relacao_loja
  
   loja_id (PK, FK)
   produto_id (PK, FK)
   estoque
   preco
  
  
  
  
   Quando faço select * from produtos tenho todos os resultados.
  
   Como eu rotorno o seguinte?
  
   |  name  | lojas
   | tv lcd lg 29 | 1,2
  
   Tem como?
  
   Se eu der group by name ele pede id tb, e ai dá na mesma...
  
 
 
  Além do excelente e apropriado conselho do Lucas você pode usar,
  especificamente para o select desejado, uma função de agregação.
  Veja o exemplo array_accum em:
  http://www.postgresql.org/docs/current/interactive/xaggr.html
 


 Se isto for mesmo verdade eu diria que este é um caso único e
 sui-generis de rede de lojas.
 Imagine por ex. a livraria Saraiva em que cada loja da rede tivesse
 seus próprios livros e que cada um deles não estivesse a venda em
 nenhuma outra loja da rede. Me parece muito estranho e fora da
 realidade.

 Dê uma revisada em seu modelo conceitual de dados e leia um pouco
 sobre normalização. Pode começar por aqui:
 http://pt.wikipedia.org/wiki/Normaliza%C3%A7%C3%A3o_de_dados

 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


[pgbr-geral] Converter resultados numéricos de e n_US.utf-8 para pt_BR.utf-8 na consulta.

2009-05-18 Por tôpico Bruno Simioni
Boa tarde, senhores.

Após procurar na documentação e em algumas listas de discussão, não consegui
encontrar nada referente a minha dúvida, e então irei postar aqui. Meu
ambiente é basicamente o PostgreSQL 8.3, com lc_numeric=en_US.UTF8.

Para consultas, para campos do tipo numeric:

SELECT
to_char(val, '999G999G999G999D99'),' ')
FROM
table;

Obtenho resultados do tipo:

1,000,000.00


Quero fazer uma simples conversão do resultado, para que retorne no padrão
pt_BR.UTF-8, e então eu obtenha:

1.000.000,00

Não gostaria de utilizar as funções que determinam variáveis de ambiente
para isso, e gostaria da conversão via funções ou to_char, ou expressões
regulares, ou outras.

Ajudas?

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


Re: [pgbr-geral] Converter resultados numéricos de e n_US.utf-8 para pt_BR.utf-8 na consulta.

2009-05-18 Por tôpico Osvaldo Kussama
2009/5/18 Bruno Simioni brunosimi...@gmail.com:
 Boa tarde, senhores.

 Após procurar na documentação e em algumas listas de discussão, não consegui
 encontrar nada referente a minha dúvida, e então irei postar aqui. Meu
 ambiente é basicamente o PostgreSQL 8.3, com lc_numeric=en_US.UTF8.

 Para consultas, para campos do tipo numeric:

 SELECT
 to_char(val, '999G999G999G999D99'),' ')
 FROM
 table;

 Obtenho resultados do tipo:

 1,000,000.00


 Quero fazer uma simples conversão do resultado, para que retorne no padrão
 pt_BR.UTF-8, e então eu obtenha:

 1.000.000,00

 Não gostaria de utilizar as funções que determinam variáveis de ambiente
 para isso, e gostaria da conversão via funções ou to_char, ou expressões
 regulares, ou outras.



Tente algo do tipo:
bdteste=# SELECT to_char(1234567.89,'999.999.999,V99');
 to_char
-
1.234.567,89
(1 registro)

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 executando função

2009-05-18 Por tôpico Fabio Galluzzo
Pessoal estou executando uma função que chama outras funções dentro dela e
está me gerando este erro

ERRO: cache lookup failed for function

Alguém sabe como proceder?



Att.
Fabio Galluzzo Monteiro
___
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 executando função

2009-05-18 Por tôpico André Volpato
Fabio Galluzzo escreveu:
 Pessoal estou executando uma função que chama outras funções dentro 
 dela e está me gerando este erro

 ERRO: cache lookup failed for function

 Alguém sabe como proceder?


Confira se todas as funções estão criadas no banco.
Na dúvida, rode todos os CREATE FUNCTION novamente.


-- 

[]´s,

André Volpato



___
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 executando função

2009-05-18 Por tôpico Roberto Mello
2009/5/18 Fabio Galluzzo fgallu...@gmail.com:
 Pessoal estou executando uma função que chama outras funções dentro dela e
 está me gerando este erro

 ERRO: cache lookup failed for function

Deves ter feito um DROP e re-criado as funcoes que sao chamadas de
dentro da outra funcao, e com isso a oid da funcao mudou. Deve ser PG
8.2 ou anterior?

Se for esse o caso, re-crie a funcao principal, e a partir de agora,
use sempre o CREATE OR REPLACE FUNCTION quando precisar mudar uma
funcao.

Roberto
___
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 executando função

2009-05-18 Por tôpico Fabio Galluzzo
Deve ser isso mesmo, pois teve uma função que eu tive que recriar pq ela
estava retornando char e deveria retornar boolean.
Mto obrigado!!


Fabio.

2009/5/18 Roberto Mello roberto.me...@gmail.com

 2009/5/18 Fabio Galluzzo fgallu...@gmail.com:
  Pessoal estou executando uma função que chama outras funções dentro dela
 e
  está me gerando este erro
 
  ERRO: cache lookup failed for function

 Deves ter feito um DROP e re-criado as funcoes que sao chamadas de
 dentro da outra funcao, e com isso a oid da funcao mudou. Deve ser PG
 8.2 ou anterior?

 Se for esse o caso, re-crie a funcao principal, e a partir de agora,
 use sempre o CREATE OR REPLACE FUNCTION quando precisar mudar uma
 funcao.

 Roberto
 ___
 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] Converter resultados numéricos de e n_US.utf-8 para pt_BR.utf-8 na consulta.

2009-05-18 Por tôpico Euler Taveira de Oliveira
Bruno Simioni escreveu:
 Não gostaria de utilizar as funções que determinam variáveis de ambiente
 para isso, e gostaria da conversão via funções ou to_char, ou expressões
 regulares, ou outras.
 
Por que fazer da maneira difícil? Qual o problema em ajustar o lc_numeric no
postgresql.conf? Se ele não pode ser ajustado, por que não fazer isso na
própria sessão (set lc_numeric to 'pt_BR')? Acho que está indo pela maneira
mais difícil para uma coisa tão simples.


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