Ir para conteúdo
Fórum Script Brasil
  • 0

ERRO: Tabela como parametro de uma funcao no PGSQL!


Rodrigo VF

Pergunta

Bom galera estou com problema quando tento passar uma tabela como parametro

de uma funcao. já tentei varias opcoes q achei na net mas nenhuma deu certo.

No caso abaixo preciso passar o resultado dos selects para a funcao SINTE_EST01_SQL

e retornar o resultado.

Se alguém puder me ajudar eu agradeço... essas funcoes são só como exemplo das

que eu to fazendo!!!

Flwwww!!!

---------------------------------- Funcao Primaria ------------------------------------

CREATE OR REPLACE FUNCTION SINTETIZA_SQL()

RETURNS VOID AS

$$

DECLARE

D02 RECORD;

A17 RECORD;

X NUMERIC;

BEGIN

SELECT INTO D02 * FROM CAD02 WHERE CAD02.cdemp = '51' AND

CAD02.nrped = '0172970' AND

CAD02.cdexp = '10.1010.00010' AND

sr_deleted = '';

SELECT INTO A17 * FROM FTA17 WHERE FTA17.cdemp = '51' AND

FTA17.nrped = '0172970' AND

FTA17.cdexp = '10.1010.00010' AND

sr_deleted = '';

X := SINTE_EST01_SQL( D02, A17 );

END;

$$ LANGUAGE 'PLPGSQL';

---------------------------------- Funcao Secundaria ------------------------------------

CREATE OR REPLACE FUNCTION SINTE_EST01_SQL( D02 CAD02, A17 FTA17 )

RETURNS "text" AS

$$

DECLARE

cRET TEXT;

BEGIN

IF D02.controle = '47' THEN

cRET := '1'

ELSEIF A17.controle = '47' THEN

cRET := '0'

END IF;

RETURN( nRET );

END;

$$ LANGUAGE 'PLPGSQL';

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Opa.. beleza Rodrigo VF!!!

Está faltando a declaração de create type no início da função.... veja o exemplo abaixo

CREATE TYPE nome_do_esquema.nome_do_type AS(cpo1 character varying(8), cpo2 character varying(196));

CREATE OR REPLACE FUNCTION nome_do_esquema.nome_da_funcao(parametro_da_funcao character varying)
  RETURNS SETOF nome_do_esquema.nome_do_type AS
$BODY$
DECLARE
r nome_do_esquema.nome_do_type%ROWTYPE;
registro record;
BEGIN
FOR registro 
 IN 
  select cpoX AS cpo1, cpoY AS cpo2 from nome_do_esquema.nome_databela AS proc 
  where cpoX ilike parametro_da_funcao
ORDER BY cpo1
  LOOP
  r.cpo1     := registro.cpo1;
  r.cpo2     := registro.cpo2;
 RETURN NEXT r;
 END LOOP;
 RETURN;
END
$BODY$
  LANGUAGE 'plpgsql' VOLATILE
  COST 100
  ROWS 1000;

Editado por Gigabyte
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...