Pessoal,

Após diversas tentativas, venho a lista atrás do motivo.

tabela:

CREATE TABLE public.empresa (
id SERIAL,
nomefantasia VARCHAR(50) NOT NULL,
razaosocial VARCHAR(50) NOT NULL,
endereco VARCHAR(40) NOT NULL,
numero VARCHAR(6) NOT NULL,
complemento VARCHAR(20) NOT NULL,
bairro VARCHAR(20) NOT NULL,
cep VARCHAR(8) NOT NULL,
id_municipio INTEGER NOT NULL,
dddtelefone VARCHAR(2) NOT NULL,
telefone VARCHAR(8) NOT NULL,
dddfax VARCHAR(2) NOT NULL,
fax VARCHAR(8) NOT NULL,
cnpj VARCHAR(14) NOT NULL,
cei VARCHAR(14) NOT NULL,
iestadual VARCHAR(20) NOT NULL,
imunicipal VARCHAR(10) NOT NULL,
registro VARCHAR(20) NOT NULL,
orgaoregistro VARCHAR(20) NOT NULL,
dataregistro DATE NOT NULL,
inicioatividade DATE NOT NULL,
encerratividade DATE NOT NULL,
valorcapital NUMERIC(12,2) NOT NULL,
id_naturezajuridica INTEGER NOT NULL,
id_cnae INTEGER NOT NULL,
url VARCHAR(60) NOT NULL,
email VARCHAR(60) NOT NULL,
id_gpspagamento INTEGER NOT NULL,
id_fpas INTEGER NOT NULL,
CONSTRAINT id_empresa PRIMARY KEY(id)
) WITHOUT OIDS;

Function:

CREATE OR REPLACE FUNCTION public.getgridempresa (tabcampo varchar, 
tabvalorpesquisa varchar) RETURNS SETOF public.empresa AS
$body$
declare
 vempresa record;
begin
 FOR vempresa IN EXECUTE 'SELECT * FROM public.empresa WHERE ' || 
tabCampo || ' ILIKE ''' || tabValorPesquisa || ''''
 LOOP
    RETURN NEXT vempresa;
 END LOOP;
end
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;

Quando executo:

select * from getgridempresa('nomefantasia','m%');

o erro abaixo é retornado:

ERRO:  wrong record type supplied in RETURN NEXT
CONTEXT:  PL/pgSQL function "getgridempresa" line 6 at return next

Se colocar no retorno da FUNCTION um COMPOSITE TYPE dos campos da tabela 
public.empresa, resolve! Mas porque em outras tabelas funciona eu 
colocando o nome da tabela como retorno?
Nesta funciona:

create table teste (
id serial not null,
nome varchar(100) not null,
datanascimento date not null,
salario numeric(12,2) not null,
horario time not null,
CONSTRAINT id_teste primary key (id)
);


Rogério Bassete

Servidor: Debian Sarge, PostgreSQL 8.1.
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a