Fórum Erro ao SP EXECUTE STATEMENT #530683

03/09/2015

0

Galera não estou conseguindo encontrar onde esta o erro dessa SP, tento executa-la mas da erro: unexpected end of command - linha 104.
CREATE OR ALTER PROCEDURE SP_CUBO_VENDAS (
    dt_ini date,
    dt_fim date,
    status integer,
    loja integer)
returns (
    ped_id integer,
    qtde_pedidos integer,
    tipo varchar(30),
    data_cad timestamp,
    data_emissao timestamp,
    diacorrente smallint,
    mes char(9),
    anocorrente smallint,
    data_cancelamento timestamp,
    data_fechamento timestamp,
    fun_id integer,
    codigo_vendedor varchar(44),
    vendedor varchar(30),
    equipe varchar(44),
    codigo_responsavel integer,
    responsavel varchar(30),
    codigo_razao varchar(134),
    cli_razao varchar(120),
    cli_nome varchar(120),
    cli_endereco varchar(107),
    cli_complemento varchar(100),
    cli_bairro varchar(70),
    cli_cidade varchar(70),
    cli_uf varchar(2),
    ped_obs varchar(300),
    fpgto_id integer,
    cpgto_id integer,
    fpgto_id2 integer,
    fpgto_id3 integer,
    cpgto_id2 integer,
    cpgto_id3 integer,
    total1 numeric(18,2),
    total2 numeric(18,2),
    tota numeric(18,2),
    motivo_cancelamento varchar(200),
    ped_obs_cancel varchar(300),
    prod_id integer,
    prod_ean varchar(14),
    prod_descricao varchar(120),
    prod_und_com varchar(6),
    grupo varchar(60),
    for_id integer,
    for_nome_fantasia varchar(80),
    pi_preco numeric(18,2),
    pi_qtde numeric(9,2),
    pi_desconto numeric(18,2),
    pi_bruto numeric(18,2),
    pi_total numeric(18,2),
    custo numeric(18,2),
    loj_nome varchar(30))
as
declare variable SQL varchar(5000);
BEGIN
  -- delete from cubo_vendas;

   SQL = 'SELECT    pedidos.ped_id,
               0,
               tipo_venda.tipo, 
               pedidos.data_cad, 
               pedidos.data_emissao, 
               Extract(day FROM pedidos.data_emissao) AS diacorrente,
               (CASE Extract(month FROM pedidos.data_emissao)
                          WHEN 1 THEN ''JANEIRO''
                          WHEN 2 THEN ''FEVEREIRO''
                          WHEN 3 THEN ''MARÇO''
                          WHEN 4 THEN ''ABRIL''
                          WHEN 5 THEN ''MAIO''
                          WHEN 6 THEN ''JUNHO''
                          WHEN 7 THEN ''JULHO''
                          WHEN 8 THEN ''AGOSTO''
                          WHEN 9 THEN ''SETEMBRO''
                          WHEN 10 THEN ''OUTUBRO''
                          WHEN 11 THEN ''NOVEMBRO''
                          WHEN 12 THEN ''DEZEMBRO''
               END)                                    AS mes,
               Extract(year FROM pedidos.data_emissao) AS anocorrente, 
               pedidos.data_cancelamento, 
               pedidos.data_fechamento, 
               pedidos.fun_id,
               pedidos.fun_id'|| ' - '|| 'funcionarios.fun_apelido AS codigo_vendedor,
               funcionarios.fun_apelido               AS vendedor, 
               equipes.equipe, 
               equipes_vendas.codigo_responsavel, 
               ( 
                      SELECT first 1 f.fun_apelido 
                      FROM   funcionarios f 
                      WHERE  f.fun_id = equipes_vendas.codigo_responsavel) AS responsavel, 
               pedidos.cli_id'|| ' - '|| 'clientes.cli_razao AS codigo_razao,
               clientes.cli_razao, 
               clientes.cli_nome, 
               clientes.cli_endereco'||', '||'clientes.cli_numero AS cli_endereco,
               clientes.cli_complemento, 
               clientes.cli_bairro, 
               clientes.cli_cidade, 
               clientes.cli_uf,
               pedidos.ped_obs, 
               pedidos.fpgto_id, 
               pedidos.cpgto_id, 
               pedidos.fpgto_id2, 
               pedidos.fpgto_id3, 
               pedidos.cpgto_id2, 
               pedidos.cpgto_id3, 
               COALESCE(pedidos.total1,0) AS total1, 
               COALESCE(pedidos.total2,0) AS total2, 
               COALESCE(pedidos.total3,0) AS tota, 
               pedidos.motivo_cancelamento, 
               pedidos.ped_obs, 
               pedidos_itens.prod_id, 
               produtos.prod_ean, 
               produtos.prod_descricao, 
               produtos.prod_und_com, 
               grupo_prod.grupo, 
               produtos.for_id, 
               fornecedor.for_nome_fantasia, 
               COALESCE(pedidos_itens.pi_preco,0)    AS pi_preco, 
               COALESCE(pedidos_itens.pi_qtde,0)     AS pi_qtde, 
               COALESCE(pedidos_itens.pi_desconto,0) AS pi_desconto, 
               COALESCE(pedidos_itens.pi_total,0) + COALESCE(pedidos_itens.pi_desconto,0) as pi_bruto,
               COALESCE(pedidos_itens.pi_total,0)    AS pi_total, 
               COALESCE(pedidos_itens.custo,0)       AS custo,
               lojas.loj_nome 
    FROM       pedidos_itens 
    INNER JOIN pedidos 
    ON         ( 
                          pedidos_itens.ped_id = pedidos.ped_id) 
    INNER JOIN lojas 
    ON         ( 
                          pedidos.loj_id = lojas.loj_id) 
    INNER JOIN funcionarios 
    ON         ( 
                          pedidos.fun_id = funcionarios.fun_id) 
    INNER JOIN clientes 
    ON         ( 
                          pedidos.cli_id = clientes.cli_id) 
    LEFT JOIN  nfe 
    ON         ( 
                          pedidos.nfe_id = nfe.nfe_id) 
    INNER JOIN tipo_venda 
    ON         ( 
                          pedidos.tipo_id = tipo_venda.tip_id) 
    INNER JOIN produtos 
    ON         ( 
                          pedidos_itens.prod_id = produtos.prod_id) 
    INNER JOIN grupo_prod 
    ON         ( 
                          produtos.gru_id = grupo_prod.gru_id) 
    INNER JOIN fornecedor 
    ON         ( 
                          produtos.for_id = fornecedor.for_id)
    LEFT JOIN  equipes_vendas 
    ON         ( 
                          pedidos.fun_id = equipes_vendas.fun_id) 
    LEFT JOIN  equipes 
    ON         ( 
                          equipes_vendas.equ_id = equipes.equ_id)
    WHERE
        lojas.loj_nome IS NOT NULL  and
        pedidos.status = '||:status ||' AND
        cast(pedidos.data_emissao AS date) BETWEEN '''||:dt_ini||''' AND '''||:dt_fim ||'';

   if (:loja > 0) then
   begin
     SQL = SQL || ' and pedidos.loj_id = '|| :loja;
   end

   exception mensagem sql;
/*$$IBEC$$ 
    FOR
     EXECUTE STATEMENT SQL

    INTO :PED_ID,
         :QTDE_PEDIDOS,
         :TIPO,
         :DATA_CAD,
         :DATA_EMISSAO,
         :DIACORRENTE,
         :MES,
         :ANOCORRENTE,
         :DATA_CANCELAMENTO,
         :DATA_FECHAMENTO,
         :FUN_ID,
         :CODIGO_VENDEDOR,
         :VENDEDOR,
         :EQUIPE,
         :CODIGO_RESPONSAVEL,
         :RESPONSAVEL,
         :CODIGO_RAZAO,
         :CLI_RAZAO,
         :CLI_NOME,
         :CLI_ENDERECO,
         :CLI_COMPLEMENTO,
         :CLI_BAIRRO,
         :CLI_CIDADE,
         :CLI_UF,
         :PED_OBS,
         :FPGTO_ID,
         :CPGTO_ID,
         :FPGTO_ID2,
         :FPGTO_ID3,
         :CPGTO_ID2,
         :CPGTO_ID3,
         :TOTAL1,
         :TOTAL2,
         :TOTA,
         :MOTIVO_CANCELAMENTO,
         :ped_obs_cancel,
         :PROD_ID,
         :PROD_EAN,
         :PROD_DESCRICAO,
         :PROD_UND_COM,
         :GRUPO,
         :FOR_ID,
         :FOR_NOME_FANTASIA,
         :PI_PRECO,
         :PI_QTDE,
         :PI_DESCONTO,
         :PI_BRUTO,
         :PI_TOTAL,
         :CUSTO,
         :LOJ_NOME
  DO
  exception mensagem SQL;


  BEGIN
    SUSPEND;

  END




END
Sidney Abreu

Sidney Abreu

Responder

Posts

04/09/2015

Fabio Basso

Nas linhas onde você usar o operador de concatenação ( || ), você não deve colocar o operador entre aspas.
seu código: pedidos.fun_id'|| ' - '|| 'funcionarios.fun_apelido AS codigo_vendedor,
correto: pedidos.fun_id || ' - ' || funcionarios.fun_apelido AS codigo_vendedor,
Responder

Gostei + 0

07/09/2015

Sidney Abreu

é isso mesmo. obrigado
Responder

Gostei + 0

07/09/2015

Sidney Abreu

é isso mesmo. obrigado
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar