Erro de sintaxe PL/pgSQL ao criar uma FUNCTION com INSERT
29/05/2019
0
--Quando tento rodar a função, apresenta o seguinte erro:
--ERROR: erro de sintaxe em ou próximo a ";"
--LINE 129: END;
--SQL state: 42601
--Character: 3341
Alguém saberia me ajudar?
CREATE OR REPLACE FUNCTION dados.fn_insere_flg_status(cod_tipo_identificacao integer)
RETURNS void AS $$
DECLARE
doc character varying;--(100);
cod integer;
identidade character varying;--(20);
pis character varying;--(20);
num_certidao character varying;--(20);
ident_civil character varying;--(20);
num_cert_reservista character varying;--(20);
titulo_eleitor character varying;--(20);
_pis character varying;--(20);
BEGIN
doc := (SELECT vlr_numero_documento FROM corporativo.tb_identificacao_pessoa);
cod := (SELECT cod_tipo_identificacao FROM corporativo.tb_identificacao_pessoa);
identidade := (SELECT identidade FROM dados.db_recadastramento);
pis := (SELECT num_pispasep FROM corporativo.tb_pessoa);
num_certidao := (SELECT num_certidao FROM dados.db_recadastramento);
ident_civil := (SELECT ident_civil FROM dados.db_recadastramento);
num_cert_reservista := (SELECT num_cert_reservista FROM dados.db_recadastramento);
titulo_eleitor := (SELECT titulo_eleitor FROM dados.db_recadastramento);
_pis := (SELECT num_pis_pasep FROM dados.db_recadastramento);
IF (doc IS NULL AND cod = 2)
THEN
INSERT INTO dados.db_recadastramento (flg_identidade)
VALUES (''N'');
--RETURN;
ELSE IF (identidade = doc AND cod = 2)
THEN
INSERT INTO dados.db_recadastramento (flg_identidade)
VALUES (''E'');
--RETURN;
ELSE
INSERT INTO dados.db_recadastramento (flg_identidade)
VALUES (''D'');
--RETURN;
END IF;
IF (pis IS NULL AND cod = 51)
THEN
INSERT INTO dados.db_recadastramento (flg_pis_pasep)
VALUES (''N'');
--RETURN;
ELSE IF (_pis = pis AND cod = 51)
THEN
INSERT INTO dados.db_recadastramento (flg_pis_pasep)
VALUES (''E'');
--RETURN;
ELSE
INSERT INTO dados.db_recadastramento (flg_pis_pasep)
VALUES (''D'');
--RETURN;
END IF;
IF (doc IS NULL AND cod = 5)
THEN
INSERT INTO dados.db_recadastramento (flg_certidao)
VALUES (''N'');
--RETURN;
ELSE IF (_doc = doc AND cod = 5)
THEN
INSERT INTO dados.db_recadastramento (flg_certidao)
VALUES (''E'');
--RETURN;
ELSE
INSERT INTO dados.db_recadastramento (flg_certidao)
VALUES (''D'');
--RETURN;
END IF;
IF (doc IS NULL)
THEN
INSERT INTO dados.db_recadastramento (flg_ident_civil)
VALUES (''N'');
--RETURN;
ELSE IF (_doc = doc)
THEN
INSERT INTO dados.db_recadastramento (flg_ident_civil)
VALUES (''E'');
--RETURN;
ELSE
INSERT INTO dados.db_recadastramento (flg_ident_civil)
VALUES (''D'');
--RETURN;
END IF;
IF (doc IS NULL)
THEN
INSERT INTO dados.db_recadastramento (flg_certificado_reservista)
VALUES (''N'');
--RETURN;
ELSE IF (_doc = doc)
THEN
INSERT INTO dados.db_recadastramento (flg_certificado_reservista)
VALUES (''E'');
--RETURN;
ELSE
INSERT INTO dados.db_recadastramento (flg_certificado_reservista)
VALUES (''D'');
--RETURN;
END IF;
IF (doc IS NULL)
THEN
INSERT INTO dados.db_recadastramento (flg_titulo_eleitor)
VALUES (''N'');
--RETURN;
ELSE IF (_doc = doc)
THEN
INSERT INTO dados.db_recadastramento (flg_titulo_eleitor)
VALUES (''E'');
--RETURN;
ELSE
INSERT INTO dados.db_recadastramento (flg_titulo_eleitor)
VALUES (''D'');
--RETURN;
END IF;
END;
$$ LANGUAGE ''plpgsql''
--ERROR: erro de sintaxe em ou próximo a ";"
--LINE 129: END;
--SQL state: 42601
--Character: 3341
Alguém saberia me ajudar?
CREATE OR REPLACE FUNCTION dados.fn_insere_flg_status(cod_tipo_identificacao integer)
RETURNS void AS $$
DECLARE
doc character varying;--(100);
cod integer;
identidade character varying;--(20);
pis character varying;--(20);
num_certidao character varying;--(20);
ident_civil character varying;--(20);
num_cert_reservista character varying;--(20);
titulo_eleitor character varying;--(20);
_pis character varying;--(20);
BEGIN
doc := (SELECT vlr_numero_documento FROM corporativo.tb_identificacao_pessoa);
cod := (SELECT cod_tipo_identificacao FROM corporativo.tb_identificacao_pessoa);
identidade := (SELECT identidade FROM dados.db_recadastramento);
pis := (SELECT num_pispasep FROM corporativo.tb_pessoa);
num_certidao := (SELECT num_certidao FROM dados.db_recadastramento);
ident_civil := (SELECT ident_civil FROM dados.db_recadastramento);
num_cert_reservista := (SELECT num_cert_reservista FROM dados.db_recadastramento);
titulo_eleitor := (SELECT titulo_eleitor FROM dados.db_recadastramento);
_pis := (SELECT num_pis_pasep FROM dados.db_recadastramento);
IF (doc IS NULL AND cod = 2)
THEN
INSERT INTO dados.db_recadastramento (flg_identidade)
VALUES (''N'');
--RETURN;
ELSE IF (identidade = doc AND cod = 2)
THEN
INSERT INTO dados.db_recadastramento (flg_identidade)
VALUES (''E'');
--RETURN;
ELSE
INSERT INTO dados.db_recadastramento (flg_identidade)
VALUES (''D'');
--RETURN;
END IF;
IF (pis IS NULL AND cod = 51)
THEN
INSERT INTO dados.db_recadastramento (flg_pis_pasep)
VALUES (''N'');
--RETURN;
ELSE IF (_pis = pis AND cod = 51)
THEN
INSERT INTO dados.db_recadastramento (flg_pis_pasep)
VALUES (''E'');
--RETURN;
ELSE
INSERT INTO dados.db_recadastramento (flg_pis_pasep)
VALUES (''D'');
--RETURN;
END IF;
IF (doc IS NULL AND cod = 5)
THEN
INSERT INTO dados.db_recadastramento (flg_certidao)
VALUES (''N'');
--RETURN;
ELSE IF (_doc = doc AND cod = 5)
THEN
INSERT INTO dados.db_recadastramento (flg_certidao)
VALUES (''E'');
--RETURN;
ELSE
INSERT INTO dados.db_recadastramento (flg_certidao)
VALUES (''D'');
--RETURN;
END IF;
IF (doc IS NULL)
THEN
INSERT INTO dados.db_recadastramento (flg_ident_civil)
VALUES (''N'');
--RETURN;
ELSE IF (_doc = doc)
THEN
INSERT INTO dados.db_recadastramento (flg_ident_civil)
VALUES (''E'');
--RETURN;
ELSE
INSERT INTO dados.db_recadastramento (flg_ident_civil)
VALUES (''D'');
--RETURN;
END IF;
IF (doc IS NULL)
THEN
INSERT INTO dados.db_recadastramento (flg_certificado_reservista)
VALUES (''N'');
--RETURN;
ELSE IF (_doc = doc)
THEN
INSERT INTO dados.db_recadastramento (flg_certificado_reservista)
VALUES (''E'');
--RETURN;
ELSE
INSERT INTO dados.db_recadastramento (flg_certificado_reservista)
VALUES (''D'');
--RETURN;
END IF;
IF (doc IS NULL)
THEN
INSERT INTO dados.db_recadastramento (flg_titulo_eleitor)
VALUES (''N'');
--RETURN;
ELSE IF (_doc = doc)
THEN
INSERT INTO dados.db_recadastramento (flg_titulo_eleitor)
VALUES (''E'');
--RETURN;
ELSE
INSERT INTO dados.db_recadastramento (flg_titulo_eleitor)
VALUES (''D'');
--RETURN;
END IF;
END;
$$ LANGUAGE ''plpgsql''
Larissa Jacobina
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)