Erro ao SP EXECUTE STATEMENT
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
Curtidas 0
Respostas
Fabio Basso
03/09/2015
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,
seu código: pedidos.fun_id'|| ' - '|| 'funcionarios.fun_apelido AS codigo_vendedor,
correto: pedidos.fun_id || ' - ' || funcionarios.fun_apelido AS codigo_vendedor,
GOSTEI 0
Sidney Abreu
03/09/2015
é isso mesmo. obrigado
GOSTEI 0
Sidney Abreu
03/09/2015
é isso mesmo. obrigado
GOSTEI 0