O codigo agora esta assim:

CREATE FUNCTION public.spRel_RelatorioAnaliticoBanco(var_cod_ctr_prc 
integer) RETURNS SETOF ty_bancoRemetente AS $$ 
DECLARE
   --Declaracao das variaveis com os valores que sera utilizados 
        myRec                                                   record;
        myRec2                                                  record;
        var_cod_chq_img                 char(10);                -- codigo
da imagem do cheque 
        var_cod_ban_apr                 integer;                 -- codigo
do banco apresentante, o filtro é feito em cima dele 
        var_cod_ban_capt                integer;                 -- codigo
do banco de captura 
        var_cod_age_capt                char(4);                 -- codigo
da agencia de captura 
        var_nom_ban                     varchar(80);             -- nome do
banco apresentante 
        var_nom_age                     varchar(80);             -- nome da
agencia de captura 
        var_num_chq                     char(7);                -- numero do
cheque 
        var_val_prc                     money;                          -- 
valor do cheque 
        var_op_conta_dv                 varchar(400);            -- conta do
cheque 
        var_cod_ocor_chq                smallint;                --
ocorrencia do cheque 
        var_linha_cod_ocor_chq          varchar(400);            -- linha
com todas as ocorrencias de cada cheque 
BEGIN 
        
        --CRIA TABELA COM AS OCORRENCIAS DE CADA CHEQUE 
        CREATE temporary TABLE temp_CHQOCOR
        ( 
                nu_cheque                          CHAR(7)                      
  
                ,co_cheque_imagem_documento        CHAR(10)                
                ,co_ocorrencia_cheque              integer
        );
        INSERT INTO temp_CHQOCOR 
        ( 
                nu_cheque 
                ,co_cheque_imagem_documento 
                ,co_ocorrencia_cheque 
        )            
        SELECT
CCS.nu_cheque,ICF.co_cheque_imagem_documento,CHOS.co_ocorrencia_cheque FROM 
        ceatb029_chqe_ocrnca_sr CHOS 
        JOIN ceatb057_imagem_chqe_formal_sr ICF 
                ON CHOS.co_controle_processamento     =       
ICF.co_controle_processamento 
                AND CHOS.nu_remessa_imagem            =       
ICF.nu_remessa_imagem 
                AND CHOS.co_agrupamento_imagem        =       
ICF.co_agrupamento_imagem 
                AND CHOS.co_cheque_imagem_documento   =       
ICF.co_cheque_imagem_documento 
        JOIN ceatb056_imagem_chqe_cptra_sr ICCS 
                ON ICF.co_controle_processamento      =       
ICCS.co_controle_processamento 
                AND ICF.nu_remessa_imagem             =       
ICCS.nu_remessa_imagem 
                AND ICF.co_agrupamento_imagem         =       
ICCS.co_agrupamento_imagem 
                AND ICF.co_cheque_imagem_documento    =       
ICCS.co_cheque_imagem_documento 
        JOIN ceatb028_chqe_captura_sr CCS 
                ON ICCS.co_controle_processamento     =       
CCS.co_controle_processamento 
                AND ICCS.nu_remessa                   =       
CCS.nu_remessa 
                AND ICCS.co_cheque_captura            =       
CCS.co_cheque_captura 
        ORDER BY
CCS.nu_cheque,ICF.co_cheque_imagem_documento,CHOS.co_ocorrencia_cheque
        
        --TABELA COM DETALHES DE CADA CHEQUE, CADA OCORRENCIA OCUPA UMA
LINHA 
        create temporary table temp_DETALHESCHQ 
        ( 
                cod_ban_apr      integer 
                ,cod_chq_img     char(10) 
                ,nom_abvd_ban    varchar(60) 
                ,nom_age         varchar(60) 
                ,cod_age_capt    char(4) 
                ,cod_ban_capt    char(4) 
                ,op_conta_dv      varchar(40) 
                ,num_chq         char(7) 
                ,val_prc         numeric(18,2) 
        ) 
        insert into temp_DETALHESCHQ( 
                cod_ban_apr 
                ,cod_chq_img         
                ,nom_abvd_ban 
                ,nom_age                 
                ,cod_age_capt         
                ,cod_ban_capt         
                ,op_conta_dv                 
                ,num_chq                 
                ,val_prc 
        ) 
        select
AIS.co_banco_apresentante,ICCS.co_cheque_imagem_documento,BAN.no_abreviado_banco,
 
               
AGE.no_agencia,CCS.co_agencia_capturado,CCS.co_banco_capturado, 
                (SUBSTRING(CCS.nu_conta_corrente from 1 for 3) + "." +
SUBSTRING(CCS.nu_conta_corrente from 1 for 9) + "-" +
SUBSTRING(CCS.nu_conta_corrente from 10 for 1)) OP_CONTA_DV, 
                CCS.nu_cheque,CCS.vr_processado  from       
ceatb028_chqe_captura_sr CCS 
                JOIN ceatb056_imagem_chqe_cptra_sr ICCS 
                        ON CCS.co_controle_processamento        =       
ICCS.co_controle_processamento 
                        AND CCS.co_cheque_captura               =       
ICCS.co_cheque_captura 
                JOIN ceatb005_almno_imagem_sr AIS 
                        ON        AIS.co_controle_processamento =       
ICCS.co_controle_processamento 
                        AND AIS.co_agrupamento_imagem           =       
ICCS.co_agrupamento_imagem 
                        AND AIS.co_cheque_imagem_documento      =       
ICCS.co_cheque_imagem_documento 
                JOIN ceatb057_imagem_chqe_formal_sr ICF 
                        ON ICCS.co_controle_processamento       =       
ICF.co_controle_processamento 
                        AND ICCS.nu_remessa_imagem                        =     
  
ICF.nu_remessa_imagem 
                        AND ICCS.co_agrupamento_imagem          =       
ICF.co_agrupamento_imagem 
                        AND ICCS.co_cheque_imagem_documento     =       
ICF.co_cheque_imagem_documento 
                JOIN ceatb037_cntre_prcso_srvco CPS 
                        ON CPS.co_controle_processamento        =       
ICF.co_controle_processamento                         
                JOIN ceatb001_agencia AGE 
                        ON AGE.co_agencia                       =       
CCS.co_agencia_capturado 
                        AND AGE.co_banco                        =       
CCS.co_banco_capturado 
                JOIN ceatb022_banco BAN 
                        ON BAN.co_banco                         =       
AIS.co_banco_apresentante 
                        and CPS.co_controle_processamento       =       
var_cod_ctr_prc  
                              
        --Tabela com os dados de retorno da proc 
        create temporary table temp_bancoRemetente 
        ( 
                co_banco_apresentante        integer 
                ,no_abreviado_banco          CHAR(40) 
                ,cod_ban_capt                integer 
                ,cod_age_capt                varchar(4) 
                ,op_conta_dv                 varchar(400) 
                ,num_chq                     char(7) 
                ,val_prc                     money 
                ,cod_ocor_chq                varchar(400) 
        ) 

        --CURSOR COM OS DADOS DETALHADOS DE CADA CHEQUE, PERMITINDO CALCULAR
AS OCORRENCIAS DE CADA CHEQUE, 
        --E FILTRAR AS INFORMACOES QUE IREI INSERIR NA TABELA DE RETORNO
temp_porBanco 
        for myRec in select * from temp_DETALHESCHQ loop 
                FOR myRec in
var_cod_ban_apr,var_cod_chq_img,var_nom_ban,var_nom_age,var_cod_age_capt,var_cod_ban_capt,var_op_conta_dv,var_num_chq,var_val_prc
loop 
                Begin 
                        select var_linha_cod_ocor_chq = ""
                        -- CURSOR PARA FORMAR A LINHA DE OCORRENCIAS POR
CHEQUE 
                        for myRec2 in SELECT co_ocorrencia_cheque FROM
temp_CHQOCOR 
                                WHERE        nu_cheque = var_num_chq
                                and co_cheque_imagem_documento =
var_cod_chq_img loop
                       
                        for myRec2 in var_cod_ocor_chq loop
                        begin 
                                select var_linha_cod_ocor_chq =
var_linha_cod_ocor_chq + cast(var_cod_ocor_chq as varchar) + " " 
                                FOR myRec2 in var_cod_ocor_chq loop 
                        end loop
                        if(var_linha_cod_ocor_chq = "") 
                        Begin 
                                Select var_linha_cod_ocor_chq = "00"
                        End loop
                                                
                                                CREATE TYPE ty_bancoRemetente 
as (
                                                co_banco_apresentante        
integer 
                                                ,no_abreviado_banco          
CHAR(40) 
                                                ,cod_ban_capt                
integer 
                                                ,cod_age_capt                
varchar(4) 
                                                ,op_conta_dv                 
varchar(400) 
                                                ,num_chq                     
char(7) 
                                                ,val_prc                     
money 
                                                ,cod_ocor_chq                
varchar(400) )

                        --INSERE OS DADOS NA TABELA DEFINITIVA 
                        insert into temp_bancoRemetente 
                        ( 
                                co_banco_apresentante         
                                ,no_abreviado_banco 
                                ,cod_ban_capt 
                                ,cod_age_capt 
                                ,op_conta_dv 
                                ,num_chq         
                                ,val_prc         
                                ,cod_ocor_chq 
                        ) 
                        values 
                        (         
                                var_cod_ban_apr 
                                ,var_nom_ban 
                                ,var_cod_ban_capt 
                                ,var_cod_age_capt 
                                ,var_op_conta_dv 
                                ,var_num_chq 
                                ,var_val_prc 
                                ,var_linha_cod_ocor_chq 
                        ) 
                        
                        for myRec in
var_cod_ban_apr,var_cod_chq_img,var_nom_ban,var_nom_age,var_cod_age_capt,var_cod_ban_capt,var_op_conta_dv,var_num_chq,var_val_prc
loop
                                               
                End loop
                RETURN QUERY select co_banco_apresentante,no_abreviado_banco 
                                ,cod_ban_capt,cod_age_capt 
                                ,op_conta_dv,num_chq         
                                ,val_prc,cod_ocor_chq 
                from temp_bancoRemetente order by  asc, vr_processado desc;
                
                drop table temp_bancoRemetente; 
End;
$$ LANGUAGE plpgsql;



provavelmente tem alguma coisa bem errada,mas pesquisei bastante e nao
consegui entender nem encontrar nada q desse uma luz,se conseguirem me dar
alguma ajuda agradeço mto....

Obrigado!
-- 
View this message in context: 
http://old.nabble.com/Problema-cursor-tp27780382p27784161.html
Sent from the PostgreSQL - Brasil mailing list archive at Nabble.com.

_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a