[pgbr-geral] Função que retorna genericamente o resultado de um SELECT qualquer
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
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
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
É 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
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
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
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
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
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
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/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
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
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/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/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
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
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/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)
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
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.
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/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
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
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/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
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.
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