create or replace FUNCTION fct_getvisitasgestao (
p_dataini DATE,
p_datafim DATE,
p_matricula trade_usuario.matricula%TYPE,
p_status VARCHAR2,
p_id_modulo trade_usuario.id_modulo%TYPE
) RETURN CLOB IS
l_cursor SYS_REFCURSOR;
vresult CLOB;
vvisita VARCHAR2(4000);
vlimiteArquivo NUMBER;
BEGIN
/*NaoIniciados
Em Andamento
Atrasados
Finalizados
NaoRealizados
Cancelados
*/
IF p_id_modulo = 1 THEN
OPEN l_cursor FOR
SELECT
'{' ||
'"DataVisita": "' || to_char(x."DataVisita", 'dd/MM/yyyy') || '",' ||
CASE x."Status"
WHEN 'NaoIniciados' THEN '"OrdemStatus": 0,'
WHEN 'Em Andamento' THEN '"OrdemStatus": 1,'
WHEN 'Atrasados' THEN '"OrdemStatus": 2,'
WHEN 'Finalizados' THEN '"OrdemStatus": 3,'
WHEN 'NaoRealizados' THEN '"OrdemStatus": 4,'
WHEN 'Cancelados' THEN '"OrdemStatus": 5,'
END ||
'"Status": "' || x."Status" || '",' ||
'"ID_VISITA_AGENDADA": ' || x.id_visita_agendada || ',' ||
'"CODIGO_CLIENTE": ' || x.codigo_cliente || ',' ||
'"Cliente": "' || fct_tratacaracteres(nvl(x."NomeFantasia", x."NomeCliente")) || '",' ||
'"Promotor": "' || fct_tratacaracteres(x.promotor) || '",' ||
'"Endereco": "' || x."Endereco" || '",' ||
'"Numero": "' || x."Numero" || '",' ||
'"Bairro": "' || x."Bairro" || '",' ||
NVL2(x."Complemento", '"Complemento": "' || x."Complemento" || '",', '') ||
'"CEP": "' || x."CEP" || '",' ||
'"Regional": "' || x."Regional" || '",' ||
'"UF": "' || x."UF" || '",' ||
'"Cidade": "' || x."Cidade" || '",' ||
'"HoraInicio": "' || TO_CHAR(x."HoraInicio",'YYYY-MM-DD"T"HH24:MI:SS".0000000000Z"') || '",' ||
'"HoraFim": "' || TO_CHAR(x."HoraFim",'YYYY-MM-DD"T"HH24:MI:SS".0000000000Z"') || '",' ||
NVL2(x."HoraInicioReal", '"HoraInicioReal": "' || TO_CHAR(x."HoraInicio",'YYYY-MM-DD"T"HH24:MI:SS".0000000000Z"', '') || '",', '') ||
NVL2(x."HoraFimReal", '"HoraFimReal": "' || TO_CHAR(x."HoraFimReal",'YYYY-MM-DD"T"HH24:MI:SS".0000000000Z"', '') || '",', '') ||
'"NotaGeral": "' || x."NotaGeral" || '"}'
FROM
(
WITH visita AS (
SELECT
id_visita_agendada,
dt_inativo,
dt_update,
hora_inicio,
hora_fim,
diasemana,
codigo_cliente
FROM
trade_visita_agendada UNPIVOT EXCLUDE NULLS ( flag_diasemana
FOR diasemana
IN ( flag_segunda AS '2',
flag_terca AS '3',
flag_quarta AS '4',
flag_quinta AS '5',
flag_sexta AS '6',
flag_sabado AS '7' ) )
WHERE
id_modulo = p_id_modulo
AND flag_diasemana = 'S'
), usuarioalterado AS (
SELECT
usa.codigo_cliente,
usa.matricula_promotor,
dias.diasdoano
FROM
trade_alteracaopromotor usa,
(
SELECT
( TO_DATE(p_dataini) + level - 1 ) diasdoano
FROM
dual
CONNECT BY
level <= ( TO_DATE(p_dataini) - TO_DATE(p_datafim) + 1 )
) dias
WHERE
usa.dt_update <= p_datafim
AND dias.diasdoano <= usa.dt_update
AND usa.id_modulo = p_id_modulo
AND NOT EXISTS (
SELECT
1
FROM
trade_alteracaopromotor a
WHERE
a.codigo_cliente = usa.codigo_cliente
AND a.id_modulo = p_id_modulo
AND a.dt_update <= usa.dt_update
AND a.matricula_promotor <> usa.matricula_promotor
AND dias.diasdoano <= a.dt_update
)
)
SELECT
(CASE WHEN t.diasdoano >= trunc(sysdate) THEN 'NaoIniciados'
ELSE 'NaoRealizados' END) "Status",
vis.id_visita_agendada,
1,
usu.matricula,
usu.matricula_supervisor,
usu.matricula_executivo,
usu.matricula_gerente,
usu.matricula_diretor,
vis.codigo_cliente,
usu.nome promotor,
vis.HORA_INICIO "HoraInicio",
vis.HORA_FIM "HoraFim",
NULL "HoraInicioReal",
NULL "HoraFimReal",
CLI.NOME "NomeCliente",
CLI.NOME_FANTASIA "NomeFantasia",
CLI.ENDERECO "Endereco",
CLI.NUMERO "Numero",
CLI.BAIRRO "Bairro",
CLI.COMPLEMENTO "Complemento",
CLI.CEP "CEP",
CLI.REGIONAL "Regional",
CLI.ESTADO "UF",
CLI.CIDADE "Cidade",
'0' "NotaGeral",
t.diasdoano "DataVisita"
FROM (
SELECT
( TO_DATE(p_dataini) + level - 1 ) diasdoano
FROM
dual
CONNECT BY
level <= ( TO_DATE(p_datafim) - TO_DATE(p_dataini) + 1 )
) t
INNER JOIN visita vis ON vis.diasemana = TO_CHAR(t.diasdoano, 'd')
INNER JOIN trade_vwm_cliente cli ON cli.codigo_cliente = vis.codigo_cliente
AND cli.ativo = 'S'
AND cli.id_modulo = p_id_modulo
LEFT JOIN usuarioalterado usa ON usa.codigo_cliente = vis.codigo_cliente
AND usa.diasdoano = t.diasdoano
INNER JOIN trade_vwm_usuario_superior usu ON nvl(usa.matricula_promotor, cli.matricula_promotor) = usu.matricula
--AND usu.ativo = 'S'
AND usu.id_modulo = p_id_modulo
WHERE T.DIASDOANO >= TRUNC(VIS.DT_UPDATE)
and vis.dt_inativo is null
and TO_DATE(p_datafim,'DD/MM/YY') >= TO_DATE(sysdate,'DD/MM/YY')
AND vis.id_visita_agendada IN (
SELECT
id_visita_agendada
FROM
trade_visita_agendada
WHERE
trunc(vigencia) = (
SELECT
MAX(trunc(vigencia))
FROM
trade_visita_agendada
WHERE
vigencia IS NOT NULL
AND trunc(vigencia) <= trunc(t.diasdoano)
AND id_modulo = p_id_modulo
)
)
AND NOT EXISTS
(SELECT 1 FROM TRADE_PUBLICADO_RESULT PBR
WHERE TRUNC(PBR.DT_COLETA) = TRUNC(T.DIASDOANO)
and PBR.MATRICULA = USU.MATRICULA
and PBR.CODIGO_CLIENTE = VIS.CODIGO_CLIENTE)
AND ( ( usu.matricula = p_matricula )
OR ( usu.matricula_supervisor = p_matricula )
OR ( usu.matricula_executivo = p_matricula )
OR ( usu.matricula_gerente = p_matricula )
OR ( usu.matricula_diretor = p_matricula )
OR EXISTS (
SELECT
1
FROM
trade_usuario_adm m
INNER JOIN trade_cargo_modulo c ON c.id_cargo = m.id_cargo
WHERE
m.matricula = p_matricula
AND m.ativo = 'S'
AND c.id_modulo = p_id_modulo
) )
UNION ALL
SELECT
CASE WHEN pbr.id_status = 1 THEN
(CASE WHEN pbr.dt_coleta >= trunc(sysdate) THEN 'NaoIniciados'
ELSE 'NaoRealizados' END)
WHEN pbr.id_status IN (2,3) THEN
(CASE WHEN pbr.dt_coleta >= trunc(sysdate) THEN 'Em Andamento'
ELSE 'NaoRealizados' END)
WHEN pbr.id_status = 4 THEN 'Finalizados'
ELSE 'Cancelados'
END "Status",
pbr.id_visita_agendada,
pbr.id_status,
usu.matricula,
usu.matricula_supervisor,
usu.matricula_executivo,
usu.matricula_gerente,
usu.matricula_diretor,
pbr.codigo_cliente,
usu.nome promotor,
pbr.hora_planejada_checkin "HoraInicio",
pbr.hora_planejada_checkout "HoraFim",
pbr.hora_checkin "HoraInicioReal",
pbr.hora_checkout "HoraFimReal",
CLI.NOME "NomeCliente",
CLI.NOME_FANTASIA "NomeFantasia",
CLI.ENDERECO "Endereco",
CLI.NUMERO "Numero",
CLI.BAIRRO "Bairro",
CLI.COMPLEMENTO "Complemento",
CLI.CEP "CEP",
CLI.REGIONAL "Regional",
CLI.ESTADO "UF",
CLI.CIDADE "Cidade",
CASE
WHEN nvl(pbr.nota_geral, '0') <> '0' THEN pbr.nota_geral
ELSE nvl((
SELECT
MAX(pbr.nota_geral)
FROM
trade_publicado_result r
WHERE
r.id_visita_agendada = pbr.id_visita_agendada
AND r.id_modulo = p_id_modulo
AND r.matricula = pbr.matricula
AND r.dt_coleta =(
SELECT
MAX(r.dt_coleta)
FROM
trade_publicado_result p
WHERE
r.id_visita_agendada = p.id_visita_agendada
AND r.id_modulo = p_id_modulo
AND r.matricula = p.matricula
AND r.dt_coleta <= p_datafim
AND nvl(p.nota_geral, '0') <> '0'
)
), '0')
END "NotaGeral",
pbr.dt_coleta "DataVisita"
FROM trade_publicado_result pbr
INNER JOIN trade_vwm_cliente cli ON cli.codigo_cliente = pbr.codigo_cliente
--AND cli.ativo = 'S'
AND cli.id_modulo = p_id_modulo
INNER JOIN trade_vwm_usuario_superior usu ON pbr.matricula= usu.matricula
--AND usu.ativo = 'S'
AND usu.id_modulo = p_id_modulo
WHERE TRUNC(pbr.dt_coleta) between p_dataini and p_datafim
and PBR.ID_VISITA_AGENDADA is not null
AND ( ( usu.matricula = p_matricula )
OR ( usu.matricula_supervisor = p_matricula )
OR ( usu.matricula_executivo = p_matricula )
OR ( usu.matricula_gerente = p_matricula )
OR ( usu.matricula_diretor = p_matricula )
OR EXISTS (
SELECT
1
FROM
trade_usuario_adm m
INNER JOIN trade_cargo_modulo c ON c.id_cargo = m.id_cargo
WHERE
m.matricula = p_matricula
AND m.ativo = 'S'
AND c.id_modulo = p_id_modulo
) )
) x
WHERE
x."Status" = nvl(p_status, x."Status")
ORDER BY
1 ASC;
ELSIF p_id_modulo = 2 THEN
OPEN l_cursor FOR SELECT
'{' ||
'"DataVisita": "' || to_char(x."DataVisita", 'dd/MM/yyyy') || '",' ||
CASE x."Status"
WHEN 'NaoIniciados' THEN '"OrdemStatus": 0,'
WHEN 'Em Andamento' THEN '"OrdemStatus": 1,'
WHEN 'Atrasados' THEN '"OrdemStatus": 2,'
WHEN 'Finalizados' THEN '"OrdemStatus": 3,'
WHEN 'NaoRealizados' THEN '"OrdemStatus": 4,'
WHEN 'Cancelados' THEN '"OrdemStatus": 5,'
END ||
'"Status": "' || x."Status" || '",' ||
'"ID_VISITA_AGENDADA": ' || x.id_visita_agendada || ',' ||
'"CODIGO_CLIENTE": ' || x.codigo_cliente || ',' ||
'"Cliente": "' || fct_tratacaracteres(nvl(cli.nome_fantasia, cli.nome)) || '",' ||
'"Promotor": "' || fct_tratacaracteres(x.promotor) || '",' ||
'"Endereco": "' || cli.endereco || '",' ||
'"Numero": "' || cli.numero || '",' ||
'"Bairro": "' || cli.bairro || '",' ||
NVL2(cli.complemento, '"Complemento": "' || cli.complemento || '",', '') ||
'"CEP": "' || cli.cep || '",' ||
'"Regional": "' || cli.regional || '",' ||
'"UF": "' || cli.estado || '",' ||
'"Cidade": "' || cli.cidade || '",' ||
'"HoraInicio": "' || TO_CHAR(x."HoraInicio",'YYYY-MM-DD"T"HH24:MI:SS".0000000000Z"') || '",' ||
'"HoraFim": "' || TO_CHAR(x."HoraFim",'YYYY-MM-DD"T"HH24:MI:SS".0000000000Z"') || '",' ||
NVL2(x."HoraInicioReal", '"HoraInicioReal": "' || TO_CHAR(x."HoraInicio",'YYYY-MM-DD"T"HH24:MI:SS".0000000000Z"', '') || '",', '') ||
NVL2(x."HoraFimReal", '"HoraFimReal": "' || TO_CHAR(x."HoraFimReal",'YYYY-MM-DD"T"HH24:MI:SS".0000000000Z"', '') || '",', '') ||
'"NotaGeral": "' || x."NotaGeral" || '"}'
FROM
(
WITH visita AS (
SELECT
id_visita_agendada,
dt_inativo,
dt_update,
hora_inicio,
hora_fim,
diasemana,
codigo_cliente,
organizacao_venda,
sequencia_visita,
semana_visita
FROM
trade_visita_agendada UNPIVOT EXCLUDE NULLS ( flag_diasemana
FOR diasemana
IN ( flag_segunda AS '2',
flag_terca AS '3',
flag_quarta AS '4',
flag_quinta AS '5',
flag_sexta AS '6',
flag_sabado AS '7' ) )
WHERE
id_modulo = p_id_modulo
AND flag_diasemana = 'S'
), periodo AS (
SELECT
( TO_DATE(p_dataini) + level - 1 ) diasdoano
FROM
dual
CONNECT BY
level <= ( TO_DATE(p_datafim) - TO_DATE(p_dataini) + 1 )
), usuarioalterado AS (
SELECT
usa.codigo_cliente,
usa.matricula_promotor,
dias.diasdoano
FROM
trade_alteracaopromotor usa,
(
SELECT
( TO_DATE(p_dataini) + level - 1 ) diasdoano
FROM
dual
CONNECT BY
level <= ( TO_DATE(p_datafim) - TO_DATE(p_dataini) + 1 )
) dias
WHERE
usa.dt_update <= p_datafim
AND dias.diasdoano <= usa.dt_update
AND usa.id_modulo = p_id_modulo
AND NOT EXISTS (
SELECT
1
FROM
trade_alteracaopromotor a
WHERE
a.codigo_cliente = usa.codigo_cliente
AND a.id_modulo = p_id_modulo
AND a.dt_update <= usa.dt_update
AND a.matricula_promotor <> usa.matricula_promotor
AND dias.diasdoano <= a.dt_update
)
)
SELECT
CASE
WHEN ( nvl(pbr.id_status, 0) = 0
OR ( pbr.id_status = 1 ) ) THEN ( CASE
WHEN TO_DATE(TO_CHAR(t.diasdoano, 'DD/MM/RRRR ')
||(TO_CHAR(vis.hora_inicio, 'HH24MISS')), 'DD/MM/RRRR HH24MISS') > SYSDATE
THEN 'NaoIniciados'
WHEN trunc(t.diasdoano) = trunc(SYSDATE) THEN 'NaoIniciados'
ELSE 'NaoRealizados'
END )
WHEN pbr.id_status IN (
2,
3
) THEN ( CASE
WHEN trunc(t.diasdoano) < trunc(SYSDATE) THEN 'NaoRealizados'
ELSE 'Em Andamento'
END )
WHEN pbr.id_status IN (
4
) THEN 'Finalizados'
ELSE 'Cancelados'
END "Status",
vis.id_visita_agendada,
pbr.id_status,
usu.matricula,
usu.matricula_supervisor,
usu.matricula_executivo,
usu.matricula_gerente,
usu.matricula_diretor,
vis.codigo_cliente,
usu.nome promotor,
vis.hora_inicio "HoraInicio",
vis.hora_fim "HoraFim",
pbr.hora_checkin "HoraInicioReal",
pbr.hora_checkout "HoraFimReal",
CASE
WHEN nvl(pbr.nota_geral, '0') <> '0' THEN pbr.nota_geral
ELSE nvl((
SELECT
MAX(pbr.nota_geral)
FROM
trade_publicado_result r
WHERE
r.id_visita_agendada = pbr.id_visita_agendada
AND r.id_modulo = p_id_modulo
AND r.matricula = pbr.matricula
AND r.dt_coleta =(
SELECT
MAX(r.dt_coleta)
FROM
trade_publicado_result p
WHERE
r.id_visita_agendada = p.id_visita_agendada
AND r.id_modulo = p_id_modulo
AND r.matricula = p.matricula
AND r.dt_coleta <= p_datafim
AND nvl(p.nota_geral, '0') <> '0'
)
), '0')
END "NotaGeral",
vis.organizacao_venda,
vis.sequencia_visita,
t.diasdoano "DataVisita"
FROM
(
SELECT
( TO_DATE(p_dataini) + level - 1 ) diasdoano
FROM
dual
CONNECT BY
level <= ( TO_DATE(p_datafim) - TO_DATE(p_dataini) + 1 )
) t
INNER JOIN visita vis ON vis.diasemana = TO_CHAR(t.diasdoano, 'd')
INNER JOIN trade_vwm_cliente cli ON cli.codigo_cliente = vis.codigo_cliente
AND cli.ativo = 'S'
AND cli.id_modulo = p_id_modulo
LEFT JOIN usuarioalterado usa ON usa.codigo_cliente = vis.codigo_cliente
AND usa.diasdoano = t.diasdoano
LEFT JOIN trade_publicado_result pbr ON pbr.id_visita_agendada = vis.id_visita_agendada
AND trunc(pbr.dt_coleta) = trunc(t.diasdoano)
AND pbr.id_modulo = p_id_modulo
INNER JOIN trade_vw_usuario_superior usu
ON nvl(pbr.matricula, nvl(usa.matricula_promotor, cli.matricula_promotor)) = usu.matricula
AND usu.ativo = 'S'
AND usu.id_modulo = p_id_modulo
WHERE
t.diasdoano <= nvl(trunc(vis.dt_inativo), p_datafim)
AND vis.id_visita_agendada IN (
SELECT
v1.id_visita_agendada
FROM
trade_visita_agendada v1
WHERE
trunc(v1.vigencia) = (
SELECT
MAX(trunc(vigencia))
FROM
trade_visita_agendada
WHERE
vigencia IS NOT NULL
AND trunc(vigencia) <= trunc(t.diasdoano)
AND id_modulo = v1.id_modulo
AND organizacao_venda = v1.organizacao_venda
)
AND v1.id_modulo = p_id_modulo
)
AND t.diasdoano >= trunc(vis.dt_update)
AND ( ( vis.semana_visita =
CASE
WHEN mod(TO_CHAR(t.diasdoano, 'IW', 'NLS_DATE_LANGUAGE=PORTUGUESE'), 2) = 0 THEN
'PAR'
ELSE
'IMPAR'
END )
OR ( vis.semana_visita = 'SEMANAL' ) )
AND trunc(t.diasdoano) BETWEEN p_dataini AND p_datafim
--AND trunc(t.diasdoano) >= TO_DATE(SYSDATE, 'DD/MM/YY')
AND ( ( usu.matricula = p_matricula )
OR ( usu.matricula_supervisor = p_matricula )
OR ( usu.matricula_executivo = p_matricula )
OR ( usu.matricula_gerente = p_matricula )
OR ( usu.matricula_diretor = p_matricula )
OR EXISTS (
SELECT
1
FROM
trade_usuario_adm m
INNER JOIN trade_cargo_modulo c ON c.id_cargo = m.id_cargo
WHERE
m.matricula = p_matricula
AND m.ativo = 'S'
AND c.id_modulo = p_id_modulo
) )
UNION ALL
SELECT
CASE
WHEN ( nvl(pbr.id_status, 0) = 0
OR ( pbr.id_status = 1 ) ) THEN ( CASE
WHEN TO_DATE(TO_CHAR(t.diasdoano, 'DD/MM/RRRR ')
||(TO_CHAR(vis.hora_inicio, 'HH24MISS')), 'DD/MM/RRRR HH24MISS') > SYSDATE
THEN 'NaoIniciados'
WHEN trunc(t.diasdoano) = trunc(SYSDATE) THEN 'NaoIniciados'
ELSE 'NaoRealizados'
END )
WHEN pbr.id_status IN (
2,
3
) THEN ( CASE
WHEN trunc(t.diasdoano) < trunc(SYSDATE) THEN 'NaoRealizados'
ELSE 'Em Andamento'
END )
WHEN pbr.id_status IN (
4
) THEN 'Finalizados'
ELSE 'Cancelados'
END "Status",
vis.id_visita_agendada,
pbr.id_status,
usu.matricula,
usu.matricula_supervisor,
usu.matricula_executivo,
usu.matricula_gerente,
usu.matricula_diretor,
vis.codigo_cliente,
usu.nome promotor,
vis.hora_inicio "HoraInicio",
vis.hora_fim "HoraFim",
pbr.hora_checkin "HoraInicioReal",
pbr.hora_checkout "HoraFimReal",
CASE
WHEN nvl(pbr.nota_geral, '0') <> '0' THEN pbr.nota_geral
ELSE nvl((
SELECT
MAX(pbr.nota_geral)
FROM
trade_publicado_result r
WHERE
r.id_visita_agendada = pbr.id_visita_agendada
AND r.id_modulo = p_id_modulo
AND r.matricula = pbr.matricula
AND r.dt_coleta =(
SELECT
MAX(r.dt_coleta)
FROM
trade_publicado_result p
WHERE
r.id_visita_agendada = p.id_visita_agendada
AND r.id_modulo = p_id_modulo
AND r.matricula = p.matricula
AND r.dt_coleta <= p_datafim
AND nvl(p.nota_geral, '0') <> '0'
)
), '0')
END "NotaGeral",
vis.organizacao_venda,
vis.sequencia_visita,
t.diasdoano "DataVisita"
FROM
(
SELECT
( TO_DATE(p_dataini) + level - 1 ) diasdoano
FROM
dual
CONNECT BY
level <= ( TO_DATE(p_datafim) - TO_DATE(p_dataini) + 1 )
) t
INNER JOIN visita vis ON vis.diasemana = TO_CHAR(t.diasdoano, 'd')
INNER JOIN trade_cliente_promotores clp ON clp.codigo_cliente = vis.codigo_cliente
INNER JOIN tra_vw_usuario_superior usu ON clp.matricula_promotor = usu.matricula
LEFT JOIN trade_publicado_result pbr ON pbr.matricula = usu.matricula
AND pbr.id_modulo = p_id_modulo
AND pbr.id_visita_agendada = vis.id_visita_agendada
AND trunc(pbr.dt_coleta) = trunc(diasdoano)
WHERE
t.diasdoano <= nvl(trunc(vis.dt_inativo), p_datafim)
AND t.diasdoano >= trunc(vis.dt_update)
AND vis.id_visita_agendada = 0
AND ( ( vis.semana_visita =
CASE
WHEN mod(TO_CHAR(t.diasdoano, 'IW', 'NLS_DATE_LANGUAGE=PORTUGUESE'), 2) = 0 THEN
'PAR'
ELSE
'IMPAR'
END )
OR ( vis.semana_visita = 'SEMANAL' ) )
AND trunc(t.diasdoano) BETWEEN p_dataini AND p_datafim
AND trunc(t.diasdoano) >= trunc(clp.dt_inicio)
AND trunc(t.diasdoano) <= trunc(nvl(clp.dt_inativo, p_datafim))
AND ( ( usu.matricula = p_matricula )
OR ( usu.matricula_supervisor = p_matricula )
OR ( usu.matricula_executivo = p_matricula )
OR ( usu.matricula_gerente = p_matricula )
OR ( usu.matricula_diretor = p_matricula )
OR EXISTS (
SELECT
1
FROM
trade_usuario_adm m
INNER JOIN trade_cargo_modulo c ON c.id_cargo = m.id_cargo
WHERE
m.matricula = p_matricula
AND m.ativo = 'S'
AND c.id_modulo = p_id_modulo
) )
) x
INNER JOIN trade_vw_dados_cliente cli ON cli.codigo_cliente = x.codigo_cliente
WHERE
x."Status" = nvl(p_status, x."Status")
ORDER BY
1 ASC;
END IF;
VRESULT := '{"Visitas": [';
LOOP
FETCH l_cursor INTO vvisita;
EXIT WHEN l_cursor%NOTFOUND;
VRESULT := VRESULT || vvisita || ',';
END LOOP;
VRESULT := VRESULT || ']}';
SELECT TO_NUMBER(VALOR) INTO vlimiteArquivo FROM TRADE_CONFIG WHERE PARAMETRO = 'limite_tamanho_df' AND ID_MODULO = p_id_modulo;
IF DBMS_LOB.GETLENGTH(VRESULT) > vlimiteArquivo THEN
VRESULT := '{"Visitas": [{"erro": "Tamanho do arquivo de retorno da pesquisa excede o limite da aplicação"}]}';
END IF;
/*
apex_json.initialize_clob_output;
apex_json.open_object;
apex_json.write('Visitas', l_cursor);
apex_json.close_object;
vresult := apex_json.get_clob_output;
vresult := replace(vresult, chr(10), '');
vresult := replace(vresult, chr(13), '');
apex_json.free_output;
*/
--DBMS_OUTPUT.PUT_LINE(VRESULT);
RETURN VRESULT;
END;
Não localizar a origem de um campo num script
Tenho essa Function e nela tem o campo Status. Não consegui saber qual a tabela de origem desse campo. Podem me dar uma ajuda? Aliás, dificuldade em enteder a Functio toda, mas o que eu quero é localizar a origem de Status(x.Status)
- dr_gori
- Moderador
- Mensagens: 5018
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Tem um IF que define qual query vai ser usada:
No primeiro IF, a origem é nas queries abaixo (linha 108, onde ele decide se é "NaoIniciados" ou "NaoRealizados".).
Na linha 197 tem um UNION com umas opções a mais. ("EmAndamento").
Essas opções vão ser usadas no select de fora. (linha 26), onde ele converte pra "OrdemStatus 0, 1, 2, 3, 4, 5).
No segundo IF é semelhante:
Linha 383 e 522. (Posteriormente sendo convertido pra OrdemStatus 0,1,2,3,4,5 na linha 291).
E é isso!
IF p_id_modulo = 1 THEN
......
ELSIF p_id_modulo = 2 THEN
......
No primeiro IF, a origem é nas queries abaixo (linha 108, onde ele decide se é "NaoIniciados" ou "NaoRealizados".).
Na linha 197 tem um UNION com umas opções a mais. ("EmAndamento").
Essas opções vão ser usadas no select de fora. (linha 26), onde ele converte pra "OrdemStatus 0, 1, 2, 3, 4, 5).
No segundo IF é semelhante:
Linha 383 e 522. (Posteriormente sendo convertido pra OrdemStatus 0,1,2,3,4,5 na linha 291).
E é isso!
Cara, pelo comportamento do sistema é isso mesmo. Vejo que você manja muito disso. Obrigado!!!
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes