Problemas com Procedure no PostgreSQL

Поиск
Список
Период
Сортировка
От Paulo (O2 Tecnologia)
Тема Problemas com Procedure no PostgreSQL
Дата
Msg-id 49E86A4A.4060507@o2tecnologia.com.br
обсуждение исходный текст
Список pgsql-sql

Estamos migrando nossos sistemas de Firebird para PostgreSQL, estamos 
com 99% do processo homologado, mas tropeçamos numa store procedure, que 
não estamos conseguindo portar, ao tentarmos inclui-la no PostgreSQL, é 
acusado o seguinte erro "sintax error at or near "SELECT" at character 
487", e infelizmente não conseguimos achar o que esta errado, dai peço 
ajuda aos colegas. Segue abaixo a procedure:

CREATE OR REPLACE FUNCTION TRAVA_INADIMPLENTES (   DIAS_VENCIDO INTEGER,   UND_LOCAL VARCHAR(3),   CNPJ VARCHAR(18))
RETURNS BOOLEAN
AS
$$
DECLARE

pDIAS_VENCIDO ALIAS FOR $1;
pUND_LOCAL ALIAS FOR $2;
pCNPJ ALIAS FOR $3;

sPERMITE_BLOQUEIO VARCHAR(1);
sFAT_DOCUMENTO VARCHAR(2);
sFAT_EMISSORA VARCHAR(3);
iFAT_NUMERO INTEGER;
sFAT_ANO VARCHAR(2);
iFAT_PARCELA INTEGER;
sCOD_CLIENTE VARCHAR(18);
iNRO_REGISTROS INTEGER;
BEGIN  IF ( pCNPJ = '' ) THEN  BEGIN     FOR        SELECT COB.TIPO_DOC, COB.FIL_ORIG, COB.FATURA, COB.ANO, 
COB.PARCELA, COB.CGC        FROM CTAS_RECEBER COB        WHERE ( COB.STATUS NOT IN ( 'CA', 'CO' )) AND ( COB.DT_PAGTO
IS
 
NULL )          AND (( CURRENT_TIMESTAMP - COB.DT_VENCTO ) >= pDIAS_VENCIDO )        ORDER BY COB.DT_VENCTO,
COB.TIPO_DOC,COB.FIL_ORIG, COB.FATURA, 
 
COB.ANO        INTO sFAT_DOCUMENTO, sFAT_EMISSORA, iFAT_NUMERO, sFAT_ANO, 
iFAT_PARCELA, sCOD_CLIENTE     DO     BEGIN        SELECT CLI.PERMITE_PROTESTO        FROM CLIENTES CLI        WHERE
CLI.CGC= sCOD_CLIENTE        INTO sPERMITE_BLOQUEIO;
 
        IF (sPERMITE_BLOQUEIO = 'T') THEN        BEGIN           UPDATE CLIENTES CLI           SET CLI.INADIMPLENTE =
'T',CLI.OPERADOR = 'BLOQUEIO 
 
AUTOMATICO', CLI.DT_ALTERACAO = CURRENT_TIMESTAMP           WHERE CLI.CGC = sCOD_CLIENTE;
           INSERT INTO HIST_COBRANCA           VALUES ( sFAT_DOCUMENTO, sFAT_EMISSORA, iFAT_NUMERO, 
sFAT_ANO, iFAT_PARCELA, CURRENT_TIMESTAMP, pUND_LOCAL,                    'BLOQUEIO AUTOMATICO DE INADIMPLENTE',
'BLOQUEIO
 
AUTOMATICO', CURRENT_TIMESTAMP );        END IF;     END  END IF ELSE  BEGIN     FOR        SELECT COB.TIPO_DOC,
COB.FIL_ORIG,COB.FATURA, COB.ANO, 
 
COB.PARCELA, COB.CGC        FROM CTAS_RECEBER COB        WHERE ( COB.STATUS NOT IN ( 'CA', 'CO' )) AND ( COB.DT_PAGTO
IS
 
NULL )         AND (( CURRENT_TIMESTAMP - COB.DT_VENCTO ) >= pDIAS_VENCIDO )         AND ( COB.CGC = pCNPJ )
ORDERBY COB.DT_VENCTO, COB.TIPO_DOC, COB.FIL_ORIG, COB.FATURA, 
 
COB.ANO        INTO sFAT_DOCUMENTO, sFAT_EMISSORA, iFAT_NUMERO, sFAT_ANO, 
iFAT_PARCELA, sCOD_CLIENTE     DO     BEGIN        SELECT CLI.PERMITE_PROTESTO        FROM CLIENTES CLI        WHERE
CLI.CGC= sCOD_CLIENTE        INTO sPERMITE_BLOQUEIO;
 
        IF (sPERMITE_BLOQUEIO = 'T') THEN        BEGIN           UPDATE CLIENTES CLI           SET CLI.INADIMPLENTE =
'T',CLI.OPERADOR = 'BLOQUEIO 
 
AUTOMATICO', CLI.DT_ALTERACAO = CURRENT_TIMESTAMP           WHERE CLI.CGC = sCOD_CLIENTE;
           SELECT COUNT( HIS.FAT_NUMERO )           FROM HIST_COBRANCA HIS           WHERE ( HIS.FAT_DOCUMENTO =
sFAT_DOCUMENTO) AND ( 
 
HIS.FAT_EMISSORA = sFAT_EMISSORA ) AND ( HIS.FAT_NUMERO = iFAT_NUMERO )            AND ( HIS.FAT_ANO = sFAT_ANO ) AND (
HIS.FAT_PARCELA= 
 
iFAT_PARCELA ) AND ( HIS.DTA_LANCAMENTO = CURRENT_TIMESTAMP )           INTO iNRO_REGISTROS;
           IF (iNRO_REGISTROS = 0) then        BEGIN          INSERT INTO HIST_COBRANCA          VALUES (
sFAT_DOCUMENTO,sFAT_EMISSORA, iFAT_NUMERO, 
 
sFAT_ANO, iFAT_PARCELA, CURRENT_TIMESTAMP, pUND_LOCAL,                   'BLOQUEIO AUTOMATICO DE INADIMPLENTE',
'BLOQUEIO
 
AUTOMATICO', CURRENT_TIMESTAMP );        END     END   END END

 RETURN TRUE;
END;
$$

LANGUAGE 'plpgsql';





__________ Information from ESET NOD32 Antivirus, version of virus signature database 4014 (20090416) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com




В списке pgsql-sql по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: finding UNIQUES in information_schema
Следующее
От: Hélder M. Vieira
Дата:
Сообщение: Re: Problemas com Procedure no PostgreSQL