um amigo desenvolveu uma rotina para executar no Oracle, mas preciso rodar no Postgree. Meu conhecimento em banco é pequeno. Estou tentando executar o script abaixo clicando em Schemas --> Function --> Create --> Function. Estou usando o Pgadim 4.
Minhas dúvidas:
1) Preciso definir o Return Type na aba Definition
2) Se eu executar a rotina como está, aparece a mensagem ERROR: type "number" does not exist
SELECT T1.ID_TRECHO, T1.ID_LOGRADOURO, T2.ID_TRECHO, T2.ID_LOGRADOURO INTO T1_ID_TRECHO, T1_ID_LOGRADOURO, T2_ID_TRECHO, T2_ID_LOGRADOURO
FROM SISTEMA_VIARIO.TRECHO T1, SISTEMA_VIARIO.TRECHO T2
WHERE T1.ID_LOGRADOURO <> T2.ID_LOGRADOURO
AND T1.NOLOG = T2.NOLOG
AND T1.Tplog = T2.Tplog
AND SDO_TOUCH(T1.GEOLOC,T2.GEOLOC) = 'TRUE'
AND ROWNUM = 1 ;
IF T1_ID_LOGRADOURO < T2_ID_LOGRADOURO
THEN
UPDATE SISTEMA_VIARIO.TRECHO
SET ID_LOGRADOURO = T2_ID_LOGRADOURO
WHERE ID_TRECHO = T1_ID_TRECHO ;
ELSE
UPDATE SISTEMA_VIARIO.TRECHO
SET ID_LOGRADOURO = T1_ID_LOGRADOURO
WHERE ID_TRECHO = T2_ID_TRECHO ;
END IF;
Pergunta
Hassan
Pessoal,
um amigo desenvolveu uma rotina para executar no Oracle, mas preciso rodar no Postgree. Meu conhecimento em banco é pequeno. Estou tentando executar o script abaixo clicando em Schemas --> Function --> Create --> Function. Estou usando o Pgadim 4.
Minhas dúvidas:
1) Preciso definir o Return Type na aba Definition
2) Se eu executar a rotina como está, aparece a mensagem ERROR: type "number" does not exist
LINE 6: T1_ID_TRECHO NUMER (10);
Segue a rotina:
DECLARE
T1_ID_TRECHO NUMBER(10);
T1_ID_LOGRADOURO NUMBER(10);
T2_ID_TRECHO NUMBER(10);
T2_ID_LOGRADOURO NUMBER(10);
BEGIN
LOOP
SELECT T1.ID_TRECHO, T1.ID_LOGRADOURO, T2.ID_TRECHO, T2.ID_LOGRADOURO INTO T1_ID_TRECHO, T1_ID_LOGRADOURO, T2_ID_TRECHO, T2_ID_LOGRADOURO
FROM SISTEMA_VIARIO.TRECHO T1, SISTEMA_VIARIO.TRECHO T2
WHERE T1.ID_LOGRADOURO <> T2.ID_LOGRADOURO
AND T1.NOLOG = T2.NOLOG
AND T1.Tplog = T2.Tplog
AND SDO_TOUCH(T1.GEOLOC,T2.GEOLOC) = 'TRUE'
AND ROWNUM = 1 ;
IF T1_ID_LOGRADOURO < T2_ID_LOGRADOURO
THEN
UPDATE SISTEMA_VIARIO.TRECHO
SET ID_LOGRADOURO = T2_ID_LOGRADOURO
WHERE ID_TRECHO = T1_ID_TRECHO ;
ELSE
UPDATE SISTEMA_VIARIO.TRECHO
SET ID_LOGRADOURO = T1_ID_LOGRADOURO
WHERE ID_TRECHO = T2_ID_TRECHO ;
END IF;
END LOOP;
EXCEPTION
WHEN NO_DATA_FOUND THEN RETURN ;
END;
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.