Ir para conteúdo

POWERED BY:

Arquivado

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

jackvalantine

problemas com store procedure

Recommended Posts

pessoal estou aprendendo agora a criar as Store procedures, mas estou com uma grande dificuldade...será que alguem pode me ajudar a encontrar o erro nessa store que eu criei...

 

codigo

CREATE OR REPLACE FUNCTION "public"."sp_grava_remessa" (numeric, numeric, numeric, numeric, numeric, varchar, varchar, varchar, varchar, varchar, varchar, varchar) RETURNS numeric AS
$body$
DECLARE
XANO ALIAS FOR $1;
XUSUARIOINCLUSAO ALIAS FOR $2;
XSETOR ALIAS FOR $3;
XUNIDADE ALIAS FOR $4;
XORDEM ALIAS FOR $5;
XDOCUMENTO ALIAS FOR $6;
XASSUNTO ALIAS FOR $7;
XDE ALIAS FOR $8;
XPARA ALIAS FOR $9;
XAC ALIAS FOR $10;
XSUFIXO varchar;
XRET_ID NUMERIC(6);
BEGIN
IF XSUFIXO = 'cvl' THEN
INSERT INTO tb_remessacvl(remcvl_ano,remcvl_cd_usuarioinclusao,remcvl_cd_setor,remcvl_cd_unidade,remcv
l_ordem,remcvl_documento,remcvl_assunto,remcvl_de,remcvl_para,remcvl_ac)
VALUES(XANO,XUSUARIOINCLUSAO,XSETOR,XUNIDADE,XORDEM,'XDOCUMENTO','XASSUNTO','XDE','XPARA','XAC');
END IF;
IF XSUFIXO = 'p1trem' THEN
INSERT INTO tb_remessacvl(remcvl_ano,remcvl_cd_usuarioinclusao,remcvl_cd_setor,remcvl_cd_unidade,remcv
l_ordem,remcvl_documento,remcvl_assunto,remcvl_de,remcvl_para,remcvl_ac)
VALUES(XANO,XUSUARIOINCLUSAO,XSETOR,XUNIDADE,XORDEM,'XDOCUMENTO','XASSUNTO','XDE','XPARA','XAC');
END IF;
IF XSUFIXO = 'pemano' THEN
INSERT INTO tb_remessacvl(remcvl_ano,remcvl_cd_usuarioinclusao,remcvl_cd_setor,remcvl_cd_unidade,remcv
l_ordem,remcvl_documento,remcvl_assunto,remcvl_de,remcvl_para,remcvl_ac)
VALUES(XANO,XUSUARIOINCLUSAO,XSETOR,XUNIDADE,XORDEM,'XDOCUMENTO','XASSUNTO','XDE','XPARA','XAC');
END IF;

RETURNS CURRVAL ('tb_remessa_seq');
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;

erro gerado

 

Warning: pg_query() [function.pg-query]: Query failed: ERROR: syntax error at or near "RETURNS" LINE 1: RETURNS CURRVAL ('tb_remessa_seq') ^ QUERY: RETURNS CURRVAL ('tb_remessa_seq') CONTEXT: PL/pgSQL function "sp_grava_remessa" line 28 at SQL statement in C:\Arquivos de programas\Apache Group\Apache\htdocs\remessa\SQL\sql_grava_remessa.php on line 10

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Tudo bom jack

 

Primeiro queria dizer que o erro encontrado é na função CURRVAL ('tb_remessa_seq') ( É nadaaaaa! http://forum.imasters.com.br/public/style_emoticons/default/grin.gif )

 

Mas essa função....tu criou ela .. ou é uma função própria do postgresql.. Toda função que retorna um valor tem que ser chamada assim SELECT FunçãoTAL('valor).

 

Ja as funções que retornam diversos valores( registros) Selecte * from FuncaoTAL2('tipo');

 

Creio eu que o seu caso é o primeiro... (tem que retornar um numeric)

 

Verifiquei também o restante do seu codigo e percebi que a variável XSUFIXO foi declarada porém não inicializada..

DECLARE

...

...

XSUFIXO VARCHAR

...

..Begin

 

If XSUFIXO ='cv1' -- ELA não tem valor na minha opinião

 

E mais uma coisa.. Eu acharia melhor que cada função realize somente uma tarefa especifica

 

Se colocar uma função inserindo na tabela 1 , 2 e 3 ao mesmo tempo...pode ficar confuso..acharia melhor criar 3 funçoes distintas...

No meu ponto de vista...

 

Espero ter ajudado...

 

Att 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.