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

Responder a