2010/3/4 aagrjr <aagr...@gmail.com>: > > 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.... >
Encerre seus comandos com ; Por ex. após o CREATE TYPE e antes do INSERT. Osvaldo PS. 1. Voce não acha que o CREATE TYPE deveria ser executado fora da função? 2. Para simplificar dê uma olhada no comando CREATE TABLE AS: http://www.postgresql.org/docs/current/interactive/sql-createtableas.html _______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral