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

Publicado por Fabio Cerqueira em 06/08/2004

[ Hits: 10.244 ]

 


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:

$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

Outras dicas deste autor

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

Leitura recomendada

Criando domínio com função de validação no PostgreSQL

Acesso externo no PostgreSQL 8.4

SQL: Filtragem com WHERE sem problemas com maiúsculo ou minúsculo

MicroOLAP - Ferramenta para modelagem em PostgreSQL

Instalando, configurando e administrando o Postgres

  

Comentários
[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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts