[pgbr-geral] Select into variavel tipo tabela temporaria para iterar depois - sem array

2012-02-14 Por tôpico Moisés P . Sena
Bom dia pessoal!

Como faço para conseguir o seguinte resultado em uma PL/PGSQL (sem usar
ARRAY):

a) Selecionar varias linhas e guardar em uma variavel
b) iterar sobre as linhas desta variavel e fazer alguma coisa
b) iterar novamente as linhas desta variavel e fazer alguma outra coisa

OBS.:
   1) Este é a simplificação de um problema real que preciso resolver.
   2) Com array eu consigo chegar a este resultado, mas nao quero usá-lo, a
nao ser que eu nao tenha outra opção .


Tipo:

--
create or replace function fn_teste() returns void
as $$
declare
   resultadoQuery RECORD;
   r RECORD;
begin
   select u.* into resultadoQuery from usuario u;

   for r in rec loop
raise notice 'loop 1 -- %', r.login;
   end loop;

   for r in rec loop
raise notice 'loop 2 -- %', r.nome;
   end loop;
end;
$$ language plpgsql;
--

Alguma sabe como chegar a este resultado?

Abraços..

-- 
Moisés P. Sena
(Analista e desenvolvedor de sistemas WEB e mobile)
http://www.moisespsena.com
http://linux.moisespsena.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] Select into variavel tipo tabela temporaria para iterar depois - sem array

2012-02-14 Por tôpico Euler Taveira de Oliveira
On 14-02-2012 08:05, Moisés P. Sena wrote:
 Como faço para conseguir o seguinte resultado em uma PL/PGSQL (sem usar 
 ARRAY):
 
 a) Selecionar varias linhas e guardar em uma variavel
 b) iterar sobre as linhas desta variavel e fazer alguma coisa
 b) iterar novamente as linhas desta variavel e fazer alguma outra coisa
 
Utilize cursor [1]. Não traga os velhos hábitos de linguagens de programação
para PLs.


[1] http://www.postgresql.org/docs/current/static/plpgsql-cursors.html


-- 
   Euler Taveira de Oliveira - Timbira   http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Select into variavel tipo tabela temporaria para iterar depois - sem array

2012-02-14 Por tôpico Moisés P . Sena
Em 14 de fevereiro de 2012 11:56, Euler Taveira de Oliveira 
eu...@timbira.com escreveu:

 On 14-02-2012 08:05, Moisés P. Sena wrote:
  Como faço para conseguir o seguinte resultado em uma PL/PGSQL (sem usar
 ARRAY):
 
  a) Selecionar varias linhas e guardar em uma variavel
  b) iterar sobre as linhas desta variavel e fazer alguma coisa
  b) iterar novamente as linhas desta variavel e fazer alguma outra coisa
 
 Utilize cursor [1]. Não traga os velhos hábitos de linguagens de
 programação
 para PLs.


 [1] http://www.postgresql.org/docs/current/static/plpgsql-cursors.html


Legal!

E para eu saber se este cursor retornou algum registro? tipo, usando array
eu usaria (array_length(..)), mas eu preciso apenas saber se existe algum
registro no cursor, tipo isto:

IF ( CURSOR NAO VAZIO )
THEN
 RAISE NOTICE 'Existem registros';
ELSE
 RAISE NOTICE 'Nenhum registro encontrado'
END IF;


Abraços!
-- 
Moisés P. Sena
(Analista e desenvolvedor de sistemas WEB e mobile)
http://www.moisespsena.com
http://linux.moisespsena.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] Select into variavel tipo tabela temporaria para iterar depois - sem array

2012-02-14 Por tôpico Marcone
 a) Selecionar varias linhas e guardar em uma variavel
 b) iterar sobre as linhas desta variavel e fazer alguma coisa
 b) iterar novamente as linhas desta variavel e fazer alguma outra coisa

Eu faria assim:

 --
 create or replace function fn_teste() returns void
 as $$
 declare
    r RECORD;
 begin

     for r in select u.* into resultadoQuery from usuario u
loop
     raise notice 'loop 1 -- %', r.login;
     raise notice 'loop 2 -- %', r.nome; -- Faz as duas
atividades de uma vez para cada registro.
    end loop;

 end;
 $$ language plpgsql;
 --


-- 
Marcone Peres - DBA
http://www.linkedin.com/in/marconeperes
@marconeperes
(61) 8146-0028
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Select into variavel tipo tabela temporaria para iterar depois - sem array

2012-02-14 Por tôpico Moisés P . Sena
Em 14 de fevereiro de 2012 14:25, Marcone marconepe...@gmail.com escreveu:

  a) Selecionar varias linhas e guardar em uma variavel
  b) iterar sobre as linhas desta variavel e fazer alguma coisa
  b) iterar novamente as linhas desta variavel e fazer alguma outra coisa

 Eu faria assim:

 
 --
  create or replace function fn_teste() returns void
  as $$
  declare
 r RECORD;
  begin
 
 for r in select u.* into resultadoQuery from usuario u
 loop
  raise notice 'loop 1 -- %', r.login;
  raise notice 'loop 2 -- %', r.nome; -- Faz as duas
 atividades de uma vez para cada registro.
 end loop;

  end;
  $$ language plpgsql;
 
 --


Mas é que precisa ser executado separadamente mesmo, o CURSOR, funcionou
legal. Mas está valendo =)

Abraços!

-- 
Moisés P. Sena
(Analista e desenvolvedor de sistemas WEB e mobile)
http://www.moisespsena.com
http://linux.moisespsena.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] Select into variavel tipo tabela temporaria para iterar depois - sem array

2012-02-14 Por tôpico Matheus de Oliveira
Após o FETCH ou o MOVE você pode usar a variável especial FOUND:

(...)
FETCH seu_cursor INTO sua_var;
IF FOUND THEN
 RAISE NOTICE 'Existem registros';
ELSE
 RAISE NOTICE 'Nenhum registro encontrado'
END IF;
(...)

--
Matheus de Oliveira

Bacharelado em Ciências de Computação
Laboratório de Computação de Alto Desempenho -
LCADhttp://www.lcad.icmc.usp.br/
Instituto de Ciências Matemáticas e de Computação -
ICMChttp://www.icmc.usp.br/
Universidade de São Paulo - USP http://www.sc.usp.br/




2012/2/14 Moisés P. Sena moisesps...@gmail.com



 Em 14 de fevereiro de 2012 11:56, Euler Taveira de Oliveira 
 eu...@timbira.com escreveu:

 On 14-02-2012 08:05, Moisés P. Sena wrote:
  Como faço para conseguir o seguinte resultado em uma PL/PGSQL (sem usar
 ARRAY):
 
  a) Selecionar varias linhas e guardar em uma variavel
  b) iterar sobre as linhas desta variavel e fazer alguma coisa
  b) iterar novamente as linhas desta variavel e fazer alguma outra coisa
 
 Utilize cursor [1]. Não traga os velhos hábitos de linguagens de
 programação
 para PLs.


 [1] http://www.postgresql.org/docs/current/static/plpgsql-cursors.html


 Legal!

 E para eu saber se este cursor retornou algum registro? tipo, usando array
 eu usaria (array_length(..)), mas eu preciso apenas saber se existe algum
 registro no cursor, tipo isto:

 IF ( CURSOR NAO VAZIO )
 THEN
  RAISE NOTICE 'Existem registros';
 ELSE
  RAISE NOTICE 'Nenhum registro encontrado'
 END IF;


 Abraços!

 --
 Moisés P. Sena
 (Analista e desenvolvedor de sistemas WEB e mobile)
 http://www.moisespsena.com
 http://linux.moisespsena.com

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


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


Re: [pgbr-geral] Select into variavel tipo tabela temporaria para iterar depois - sem array

2012-02-14 Por tôpico Moisés P . Sena
Em 14 de fevereiro de 2012 14:32, Matheus de Oliveira 
matioli.math...@gmail.com escreveu:

 Após o FETCH ou o MOVE você pode usar a variável especial FOUND:

 (...)
 FETCH seu_cursor INTO sua_var;
 IF FOUND THEN

  RAISE NOTICE 'Existem registros';
 ELSE
  RAISE NOTICE 'Nenhum registro encontrado'
 END IF;
 (...)


Fncionou perfeitamente!

Obrigado a todos!!

Abraços,

-- 
Moisés P. Sena
(Analista e desenvolvedor de sistemas WEB e mobile)
http://www.moisespsena.com
http://linux.moisespsena.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] Pgbouncer

2012-02-14 Por tôpico Flavio Henrique Araque Gurgel
 -bash-3.2$ psql -p 6432 meudb leandro
 Password for user leandro:
 psql: ERROR:  password authentication failed for user leandro

O PgBouncer não reconheceu o usuário.

 Na segunda tentativa de conexão em sequencia

 -bash-3.2$ psql -p 6432 meudb leandro
 psql: ERROR:  pgbouncer cannot connect to server
 *** Parece que algo fica travado.

 minha conffiguração do pgbouncer /etc/pgboucer.ini:

 [databases]

 ; redirect bardb to bazdb on localhost
 meudb = host=127.0.0.1 port=5432 dbname=meubanco

Usuário e senha do banco, deveria estar acima, exceto se usando trust
ou com arquivo .pgpass.

 auth_type = md5
 ;auth_file = /var/lib/pgsql/data/global/pg_auth
 auth_file = /etc/userlist.txt
 ; ** Minha ideia é acessar utilizando o pg_auth do postgres mas como deu
 erro tentei assim para ver se ia mas tive o mesmo problema.

Qual versão do PostgreSQL?
A partir de 8.4 não tem esse arquivo de forma que o PgBouncer entenda.
Talvez você tenha que criar o auth_file na mão.
A estrutura dele é simples, duas colunas:
usuário,senha em MD5

 pool_mode = session

Se sua aplicação não usa tabelas temporárias ou prepared statements,
use o modo transaction.
É muiiito mais eficiente.

 # IPv4 local connections:
 host    all all 127.0.0.1/32  password

Então você precisa passar usuário e senha na string de conexão lá de
cima, onde citei.

[]s
Flavio Gurgel
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Medium Trust

2012-02-14 Por tôpico Claudio Hirakawa
Estou com problemas para rodar projetos em C#/Asp.Net com .NET 4 usando a
política de segurança em Medium Trust. Não consigo rodar nem no servidor
virtual do Visual Studio 2010 e nem no IIS 7.5 do Windows 7 x64. Sempre dah
o erro de System.Security.Permissions.FileIOPermission, mscorlib...
Estou usando o Npgsql 2.0.11.92, tendo registrado no GAC.

--
View this message in context: 
http://postgresql.1045698.n5.nabble.com/Medium-Trust-tp5483773p5483773.html
Sent from the PostgreSQL - Brasil mailing list archive at Nabble.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] Medium Trust

2012-02-14 Por tôpico Guimarães Faria Corcete DUTRA , Leandro
2012/2/14 Claudio Hirakawa c...@ig.com.br:
 Estou com problemas para rodar projetos em C#/Asp.Net com .NET 4 usando a
 política de segurança em Medium Trust. Não consigo rodar nem no servidor
 virtual do Visual Studio 2010 e nem no IIS 7.5 do Windows 7 x64. Sempre dah
 o erro de System.Security.Permissions.FileIOPermission, mscorlib...
 Estou usando o Npgsql 2.0.11.92, tendo registrado no GAC.

Rapaz, não entendi a sopa de letrinhas… tem a ver com PostgreSQL.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Definir ordenação

2012-02-14 Por tôpico Danilo Silva
Pessoal,

Tenho a seguinte select:

SELECT codigo, nome FROM tabela WHERE (codigo IN (4,6,1,3))

Existe a possibilidade de ordenar pelo codigo, de forma que o resultado
seja ordenado pela mesma ordem que foi passado no IN? ou seja, o 1º
resultado seria o código 4, o 2º seria o codigo 6 e assim por diante?

Obrigado a todos

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


Re: [pgbr-geral] Definir ordenação

2012-02-14 Por tôpico Edmilton Neves
Boas, não sei se existe forma mais elegante, mas já usei uma coluna com
case, tipo:
Select case when codigo = 4 then 1
When codigo = 6 then 2
When codigo = 1 then 3
End as ordem,
Coluna1, coluna2
from tabela
Order by 1

Ps: não testei o código acima agora, mas dá pra ter uma idéia.

Gde. Abraço
Ed

Em 2 15, 2012 2:45 AM, Danilo Silva danilo.dsg.go...@gmail.comescreveu:

Pessoal,

Tenho a seguinte select:

SELECT codigo, nome FROM tabela WHERE (codigo IN (4,6,1,3))

Existe a possibilidade de ordenar pelo codigo, de forma que o resultado
seja ordenado pela mesma ordem que foi passado no IN? ou seja, o 1º
resultado seria o código 4, o 2º seria o codigo 6 e assim por diante?

Obrigado a todos

Danilo

___
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