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