Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

programador php

criando uma função do zero

Recommended Posts

olá

 

galera, nunca criei uma função para banco de dados.

 

agora surgiu a necessidade de fazer uma.

 

 

CREATE FUNCTION public.alterameubanco() RETURNS text AS $$
DECLARE 
		 tabela TEXT;
		 esquema TEXT;
Begin

		SELECT INTO esquema, tabela
			schemaname, tablename
		FROM pg_catalog.pg_tables
		WHERE schemaname NOT IN ('pg_catalog', 'information_schema', 'pg_toast');

		return tabela;

end;

$$ LANGUAGE 'plpgsql';

 

o que acontece é o seguinte..

 

porque eu uso isso

 

CREATE FUNCTION public.alterameubanco() RETURNS text AS $$

a segunda pergunta é como faço para percorrer o select

 

essa query que eu fiz traz todas as tabelas do meu banco com o schema que pertence

 

 

estou lendo alguns livros e artigos, mas não estou conseguindo progredir muito...

 

espero que alguem me ajude!!

 

 

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif E ae tudo bom..cara Criei uma função que percorre o select utilizando um RECORD.

 

A tabela teste utilizada:

 

CREATE TABLE clientes (

codigo SERIAL,

nome VARCHAR (50),

CPF CHAR (14),

 

CONSTRAINT PK_CODIGO_CLIENTES PRIMARY KEY(codigo) );

 

ADICIONEI ALGUNS REGISTROS:

 

INSERT INTO CLIENTES (nome,CPF) VALUES ('José Nicolau Se DEU MAL','975.564.456-89');

INSERT INTO CLIENTES (nome,CPF) VALUES ('Maria Malaquia','115.643.989-23');

 

E por fim A função:

 

CREATE FUNCTION percorreTabelaClientes()

RETURNS SETOF VARCHAR AS $nome$

DECLARE

registro RECORD;

BEGIN

FOR registro IN SELECT * FROM Clientes LOOP

return NEXT registro.nome;

END LOOP;

END;$nome$

LANGUAGE 'plpgsql';

 

o SETOF é necessário ao retornar diversos registros.. (Poderia não retornar nada e em vez de SETOF VARCHAR colocado VOID)

a variavel registro armazena a consulta (select * from clientes()) e podemos acessar a coluna atraves do registro.coluna (EX: registro.nome)

 

POr fim..A consulta

 

Select * from percorreTabelaClientes();

 

percorretabelaclientes

----------------------------------

José Nicolau Se DEU MAL

Maria Malaquia

(2 registros)

 

Utilizando o tipo RECORD você consegue percorrer um select..Espero ter ajudado... http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.