Pular para o conteúdo

Criando um tipo específico para retorno de dados no PostgreSQL

Dica publicada em Banco de Dados / Postgres
Fabio Cerqueira fabiocerqueira
Hits: 10.852 Categoria: Banco de Dados Subcategoria: Postgres
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Criando um tipo específico para retorno de dados no PostgreSQL

Existe uma forma fácil de se retornar dados de uma query para o PHP utilizando o PostgreSQL, o que pode ser uma grande dor de cabeça para quem está iniciando. Basta criar um tipo com a estrutura do que será retornado.

Exemplo:

CREATE TYPE tp_dadospessoais AS (nome varchar, data_nasc date, rg varchar);

A função ficaria:

CREATE OR REPLACE FUNCTION f_buscaPessoa(varchar) RETURNS SETOF tp_dadospessoais AS '

SELECT nome, data_nasc, rg FROM pessoas WHERE cpf = $1;

'LANGUAGE 'SQL';


Muito simples neste caso, mas pode ser qualquer outra.

No PHP basta chamar a função passando o id:

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
$con = // string de conexão com banco;
$sql = "SELECT * FROM f_buscaPessoa('$tf_cpf')";
$res = pg_exec($con,$sql);

if ($res)
{
while($rs = pg_fetch_array($res)){
$nome = $rs["nome"];
$dt_nasc = $rs["data_nasc"];
$rg = $rs["rg"];
}
else
echo "Sem dados para exibir";

// Daqui pra frente tratamento normal da exibição;

Espero ter contribuído;

Um abraço;

Fábio Cerqueira

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Consultas sem preocupação com maiúsculas ou minúsculas no PostgreSQL

Ativando acesso remoto ao PostgreSQL 8 no Fedora

Função SQL replace: corrigindo inserções equivocadas

Fazendo backup com PostgreSQL

SQL - Copiar coluna

Evitando erros ao indexar campos timestamp em SQL

#1 Comentário enviado por juber em 03/06/2006 - 17:47h
Estou começando com Postgre e sinceramente estou achando complicado este esquema.
Quer dizer que se eu quero retornar duas colunas numa pesquisa eu tenho duas chances:
1-trazer todas as colunas e usar o tipo de retorno setof <tabela> o que iria aumentar o trafego desnecessariamente.
2-criar um tipo de dados para fazer essa pesquisa específica, o que num sistema grande significaria zilhões de tipos criados pra tudo quanto é canto.

É assim mesmo?? :-(

Contribuir com comentário

Entre na sua conta para comentar.