Rodrigo VF Postado Janeiro 21, 2009 Denunciar Share Postado Janeiro 21, 2009 Bom galera estou com problema quando tento passar uma tabela como parametrode 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_SQLe retornar o resultado.Se alguém puder me ajudar eu agradeço... essas funcoes são só como exemplo dasque eu to fazendo!!!Flwwww!!!---------------------------------- Funcao Primaria ------------------------------------CREATE OR REPLACE FUNCTION SINTETIZA_SQL()RETURNS VOID AS$$DECLARE D02 RECORD; A17 RECORD; X NUMERIC;BEGINSELECT 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'; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Gigabyte Postado Fevereiro 9, 2009 Denunciar Share Postado Fevereiro 9, 2009 (editado) Opa.. beleza Rodrigo VF!!!Está faltando a declaração de create type no início da função.... veja o exemplo abaixoCREATE 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 Fevereiro 9, 2009 por Gigabyte Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Rodrigo VF
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
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.