Preciso da ajuda para pegar essa consulta que está no SQL e transformar numa tabela no SAS. Alguém me ajuda? /****************************/; /*SMVF_CONSULTA_STATUS_DOTAL*/; /****************************/; CREATE OR REPLACE FUNCTION SMVF_CONSULTA_STATUS_DOTAL(P_CD_COTACAO IN NUMBER) RETURN TY_TAB_CONSULTA_STATUS PIPELINED AS R TY_REG_CONSULTA_STATUS; AGENDAMENTO_EXAMES DATE; AUTORIZAR_EMISSAO_APOLICE DATE; CLASSIFICACAO_RISCO DATE; CONCLUSAO_AVALIACAO DATE; CONF_SOL_SEGURO_SUBSC DATE; EMISSAO_APOLICE DATE; INDICAR_PENDENCIA DATE; INICIO_SUBSCRICAO DATE; LIBERACAO_EMISSAO_APOLICE DATE; PREVISAO_AVALIACAO DATE; RECEBIMENTO_TELE_EXAMES DATE; RECEBIMENTO_SOLIC_SEGURO DATE; RECEBIMENTO_INF_COMPL DATE; REL_INF_COMPLEMENTAR VARCHAR2(100); REL_PENDENCIAS VARCHAR2(100); SOLICITACAO_INF_COMPLEMENTAR DATE; SOLICITACAO_SEGURO DATE; SOLUCAO_PENDENCIA DATE; TELE_EXAME_ENTREGUE DATE; DTINC_SOL_INF_COMPL DATE; DTFIM_SOL_INF_COMPL DATE; NO_DIAS_CLASS_RISCO NUMBER; DTINC_EMISSAO_APOLICE DATE; NO_DIAS_EMISSAO NUMBER; NO_DIAS_LIBERACAO NUMBER; DTINCINI_AVAL_SEG DATE; NO_DIAS_AVALSOLSEGURO NUMBER; DTINI_REC_SOL_SEGURO DATE; DTINI_LIB_EMIS_APOLICE DATE; BEGIN FOR CONSULTA IN (SELECT ACAO.NM_ACAO, DA.DT_CONFIRMACAO DT_CONFIRMACAO, DA.DT_INICIO DT_INICIO, DA.DT_ENCERRAMENTO DT_ENCERRAMENTO, DA.DS_SUB_PROCESSO DS_SUB_PROCESSO, ACAO.NO_DIAS NO_DIAS FROM SMV_WORKFLOW_COTACAO WC JOIN SMV_ACAO ACAO ON ACAO.CD_ACAO = WC.CD_ACAO JOIN SMV_DETALHE_ACAO DA ON DA.CD_WORKFLOW = WC.CD_WORKFLOW WHERE CD_COTACAO = P_CD_COTACAO ORDER BY DA.CD_DETALHE_ACAO ASC) LOOP IF CONSULTA.NM_ACAO = 'AGENDAMENTO_EXAMES' AND CONSULTA.DS_SUB_PROCESSO = 'INI' THEN AGENDAMENTO_EXAMES := CONSULTA.DT_INICIO; ELSIF CONSULTA.NM_ACAO = 'AGENDAMENTO_EXAMES' AND CONSULTA.DS_SUB_PROCESSO = 'FIM' THEN TELE_EXAME_ENTREGUE := CONSULTA.DT_CONFIRMACAO; ELSIF CONSULTA.NM_ACAO = 'AUTORIZAR_EMISSAO_APOLICE' AND CONSULTA.DS_SUB_PROCESSO = 'FIM' THEN AUTORIZAR_EMISSAO_APOLICE := CONSULTA.DT_ENCERRAMENTO; ELSIF CONSULTA.NM_ACAO = 'AGENDAMENTO_INF_COMPLEMENTAR' THEN NULL; ELSIF CONSULTA.NM_ACAO = 'AVALIACAO_SOLIC_SEGURO' AND CONSULTA.DS_SUB_PROCESSO = 'INI' THEN DTINCINI_AVAL_SEG := CONSULTA.DT_INICIO; NO_DIAS_AVALSOLSEGURO := CONSULTA.NO_DIAS; ELSIF CONSULTA.NM_ACAO = 'AVALIACAO_SOLIC_SEGURO' AND CONSULTA.DS_SUB_PROCESSO = 'FIM' THEN IF CONCLUSAO_AVALIACAO IS NULL THEN CONCLUSAO_AVALIACAO := CONSULTA.DT_CONFIRMACAO; END IF; SOLICITACAO_SEGURO := CONSULTA.DT_INICIO; PREVISAO_AVALIACAO := CONSULTA.DT_INICIO; ELSIF CONSULTA.NM_ACAO = 'CLASSIFICACAO_RISCO' AND CONSULTA.DS_SUB_PROCESSO = 'INI' THEN NO_DIAS_CLASS_RISCO := CONSULTA.NO_DIAS; CLASSIFICACAO_RISCO := CONSULTA.DT_INICIO; ELSIF CONSULTA.NM_ACAO = 'EMISSAO_APOLICE' AND CONSULTA.DS_SUB_PROCESSO = 'INI' THEN DTINC_EMISSAO_APOLICE := CONSULTA.DT_INICIO; NO_DIAS_EMISSAO := CONSULTA.NO_DIAS; ELSIF CONSULTA.NM_ACAO = 'EMISSAO_APOLICE' AND CONSULTA.DS_SUB_PROCESSO = 'FIM' THEN EMISSAO_APOLICE := CONSULTA.DT_ENCERRAMENTO; ELSIF CONSULTA.NM_ACAO = 'INDICAR_PENDENCIA' AND CONSULTA.DS_SUB_PROCESSO = 'INI' THEN INDICAR_PENDENCIA := CONSULTA.DT_INICIO; IF CONSULTA.DT_INICIO IS NOT NULL THEN CONCLUSAO_AVALIACAO := CONSULTA.DT_INICIO; END IF; ELSIF CONSULTA.NM_ACAO = 'INICIO_SUBSCRICAO' AND CONSULTA.DS_SUB_PROCESSO = 'INI' THEN INICIO_SUBSCRICAO := CONSULTA.DT_INICIO; ELSIF CONSULTA.NM_ACAO = 'LIBERACAO_EMISSAO_APOLICE' AND CONSULTA.DS_SUB_PROCESSO = 'FIM' THEN LIBERACAO_EMISSAO_APOLICE := CONSULTA.DT_ENCERRAMENTO; ELSIF CONSULTA.NM_ACAO = 'LIBERACAO_EMISSAO_APOLICE' AND CONSULTA.DS_SUB_PROCESSO = 'INI' THEN NO_DIAS_LIBERACAO := CONSULTA.NO_DIAS; DTINI_LIB_EMIS_APOLICE := CONSULTA.DT_INICIO; ELSIF CONSULTA.NM_ACAO = 'RECEBIMENTO_INF_COMPLEMENTAR' AND CONSULTA.DS_SUB_PROCESSO = 'FIM' THEN NULL; ELSIF CONSULTA.NM_ACAO = 'RECEBIMENTO_SOLIC_SEGURO' AND CONSULTA.DS_SUB_PROCESSO = 'FIM' THEN RECEBIMENTO_SOLIC_SEGURO := CONSULTA.DT_CONFIRMACAO; CONF_SOL_SEGURO_SUBSC := CONSULTA.DT_CONFIRMACAO; IF INICIO_SUBSCRICAO IS NULL THEN INICIO_SUBSCRICAO := CONSULTA.DT_CONFIRMACAO; END IF; ELSIF CONSULTA.NM_ACAO = 'RECEBIMENTO_SOLIC_SEGURO' AND CONSULTA.DS_SUB_PROCESSO = 'INI' THEN DTINI_REC_SOL_SEGURO:= CONSULTA.DT_INICIO; ELSIF CONSULTA.NM_ACAO = 'RECEBIMENTO_TELE_EXAMES' AND CONSULTA.DS_SUB_PROCESSO = 'FIM' THEN RECEBIMENTO_TELE_EXAMES := CONSULTA.DT_CONFIRMACAO; ELSIF CONSULTA.NM_ACAO = 'RECLASSIFICACAO_RISCO' THEN NULL; ELSIF CONSULTA.NM_ACAO = 'SOLICITACAO_INF_COMPLEMENTAR' AND CONSULTA.DS_SUB_PROCESSO = 'INI' THEN SOLICITACAO_INF_COMPLEMENTAR := CONSULTA.DT_INICIO; DTINC_SOL_INF_COMPL := CONSULTA.DT_INICIO; ELSIF CONSULTA.NM_ACAO = 'SOLICITACAO_INF_COMPLEMENTAR' AND CONSULTA.DS_SUB_PROCESSO = 'FIM' THEN DTFIM_SOL_INF_COMPL := CONSULTA.DT_ENCERRAMENTO; ELSIF CONSULTA.NM_ACAO = 'INDICAR_PENDENCIA' AND CONSULTA.DS_SUB_PROCESSO = 'FIM' THEN SOLUCAO_PENDENCIA := CONSULTA.DT_CONFIRMACAO; END IF; END LOOP; FOR CONSULTA_PENDENCIA IN (SELECT PC.DT_RECEBIMENTO DT_RECEBIMENTO, PC.DT_SOLUCAO DT_SOLUCAO, PENDENCIA.NM_PENDENCIA, IC_AFETA_SUBSCRICAO FROM SMV_PENDENCIA_COTACAO PC JOIN SMV_PENDENCIA PENDENCIA ON PENDENCIA.CD_PENDENCIA = PC.CD_PENDENCIA WHERE CD_COTACAO = P_CD_COTACAO ORDER BY DT_RECEBIMENTO) LOOP IF CONSULTA_PENDENCIA.IC_AFETA_SUBSCRICAO = 1 THEN --RELACAO INF COMPLEMENTAR REL_INF_COMPLEMENTAR := CONSULTA_PENDENCIA.NM_PENDENCIA; RECEBIMENTO_INF_COMPL := CONSULTA_PENDENCIA.DT_RECEBIMENTO; IF CONSULTA_PENDENCIA.DT_RECEBIMENTO IS NULL THEN REL_INF_COMPLEMENTAR := CONSULTA_PENDENCIA.NM_PENDENCIA; RECEBIMENTO_INF_COMPL := CONSULTA_PENDENCIA.DT_RECEBIMENTO; END IF; END IF; IF CONSULTA_PENDENCIA.IC_AFETA_SUBSCRICAO = 0 THEN REL_PENDENCIAS := CONSULTA_PENDENCIA.NM_PENDENCIA; END IF; END LOOP; R := TY_REG_CONSULTA_STATUS(P_CD_COTACAO, AGENDAMENTO_EXAMES, TELE_EXAME_ENTREGUE, RECEBIMENTO_TELE_EXAMES, RECEBIMENTO_SOLIC_SEGURO, CONCLUSAO_AVALIACAO, INDICAR_PENDENCIA, REL_PENDENCIAS, SOLUCAO_PENDENCIA, SOLICITACAO_SEGURO, RECEBIMENTO_SOLIC_SEGURO, INICIO_SUBSCRICAO, SOLICITACAO_INF_COMPLEMENTAR, REL_INF_COMPLEMENTAR, RECEBIMENTO_INF_COMPL, CLASSIFICACAO_RISCO, NULL, --RECLASS RISCO AUTORIZAR_EMISSAO_APOLICE, LIBERACAO_EMISSAO_APOLICE, EMISSAO_APOLICE, DTINC_SOL_INF_COMPL, DTFIM_SOL_INF_COMPL, NO_DIAS_CLASS_RISCO, DTINC_EMISSAO_APOLICE, NO_DIAS_EMISSAO, NO_DIAS_LIBERACAO, DTINCINI_AVAL_SEG, NO_DIAS_AVALSOLSEGURO, DTINI_REC_SOL_SEGURO, DTINI_LIB_EMIS_APOLICE ); PIPE ROW(R); RETURN; END; /*******************************/; /*SMVF_CONSULTA_STATUS_DT_GRID*/; /*****************************/; CREATE OR REPLACE FUNCTION SMVF_CONSULTA_STATUS_DT_GRID(P_CD_COTACAO IN NUMBER) RETURN TY_TAB_CONSULTA_STATUS_GRID PIPELINED AS R TY_REG_CONSULTA_STATUS_GRID; DIFPRAZOSLA NUMBER; TEMPOPROCESSO NUMBER; STATUSACAOCOTACAO VARCHAR2(200); RESPONSAVEL NUMBER; FASE VARCHAR2(200); STATUSCOTACAO VARCHAR2(200); DATAINICIO DATE; DATAFIM DATE; PRAZOSLA NUMBER; NUMERODIAS NUMBER; PENDENTE NUMBER := 0; EXISTEWORKFLOW BOOLEAN := FALSE; BEGIN FOR CONSULTA IN (SELECT ACAO.NM_ACAO NM_ACAO, DA.DT_CONFIRMACAO DT_CONFIRMACAO, DA.DT_INICIO DT_INICIO, DA.DT_ENCERRAMENTO DT_ENCERRAMENTO, DA.DS_SUB_PROCESSO DS_SUB_PROCESSO, ACAO.NO_DIAS NO_DIAS, ACAO.DS_FASE FASE, ACAO.CD_RESPONSAVEL RESPONSAVEL, SACAO.DS_STATUS STATUSCOTACAO, COT.DT_DESISTENCIA DT_DESISTENCIA, COT.DT_RECUSA DT_RECUSA, PROP.DT_CANCELAMENTO DT_CANCELAMENTO, COT.CD_COTACAO CD_COTACAO, WC.CD_WORKFLOW CD_WORKFLOW, ACAO.DS_STATUS_ABERTURA DS_STATUS_ABERTURA, ACAO.CD_ACAO CD_ACAO, (select CLIENTE.NO_DOCUMENTO_PRINCIPAL NO_DOCUMENTO_PRINCIPAL from smv_pessoa cliente JOIN smv_pessoa_cotacao pc ON cliente.cd_pessoa = pc.cd_pessoa and pc.CD_TIPO_PESSOA_COTACAO = 'SEG' where pc.cd_cotacao = COT.CD_COTACAO ) as NO_DOCUMENTO_PRINCIPAL FROM SMV_COTACAO COT JOIN SMV_PROPOSTA PROP ON PROP.CD_COTACAO = COT.CD_COTACAO JOIN SMV_WORKFLOW_COTACAO WC ON WC.CD_COTACAO = COT.CD_COTACAO AND WC.CD_COTACAO = PROP.CD_COTACAO JOIN SMV_ACAO ACAO ON ACAO.CD_ACAO = WC.CD_ACAO JOIN SMV_DETALHE_ACAO DA ON DA.CD_WORKFLOW = WC.CD_WORKFLOW JOIN SMV_STATUS_ACAO SACAO ON SACAO.CD_STATUS_ACAO = ACAO.CD_STATUS_ACAO_ABERTURA WHERE COT.CD_COTACAO = P_CD_COTACAO And prop.cd_tipo_proposta = 'PIND' AND ACAO.CD_ACAO NOT IN (SELECT ACAO1.CD_ACAO FROM SMV_WORKFLOW_COTACAO WC1 JOIN SMV_ACAO ACAO1 ON ACAO1.CD_ACAO = WC1.CD_ACAO JOIN SMV_DETALHE_ACAO DA1 ON DA1.CD_WORKFLOW = WC1.CD_WORKFLOW WHERE CD_COTACAO = P_CD_COTACAO AND DA1.DS_SUB_PROCESSO = 'FIM') ORDER BY DT_INICIO DESC) LOOP PRAZOSLA := PVV_UTIL.SMVF_CALC_PRAZO_SLA_DIA_FINAL(CONSULTA.DT_INICIO, pvv_util.smvf_calc_dias_sla(CONSULTA.NO_DOCUMENTO_PRINCIPAL, CONSULTA.cd_acao), TO_DATE(TO_CHAR(smvk_param.obter_data_sistema(), 'YYYY/MM/DD'), 'YYYY/MM/DD'), CONSULTA.DT_DESISTENCIA, CONSULTA.DT_CANCELAMENTO, CONSULTA.DT_RECUSA); EXISTEWORKFLOW := TRUE; DATAINICIO := CONSULTA.DT_INICIO; DATAFIM := CONSULTA.DT_ENCERRAMENTO; RESPONSAVEL := CONSULTA.RESPONSAVEL; FASE := CONSULTA.FASE; STATUSCOTACAO := CONSULTA.STATUSCOTACAO; NUMERODIAS := CONSULTA.NO_DIAS; STATUSACAOCOTACAO := CONSULTA.DS_STATUS_ABERTURA; IF PRAZOSLA < 0 THEN DIFPRAZOSLA := -1; ELSIF PRAZOSLA >= 0 AND PRAZOSLA <= (NUMERODIAS / 2) THEN DIFPRAZOSLA := 0; ELSE DIFPRAZOSLA := 1; END IF; TEMPOPROCESSO := NUMERODIAS - PRAZOSLA; IF CONSULTA.DT_RECUSA IS NOT NULL THEN PENDENTE := 0; STATUSACAOCOTACAO := 'Recusada'; STATUSCOTACAO := 'RECUSADA'; exit; END IF; IF STATUSCOTACAO = 'RECUSADA' THEN PENDENTE := 0; STATUSACAOCOTACAO := 'Recusada'; exit; END IF; IF STATUSCOTACAO = 'COTACAO_PENDENCIA' THEN PENDENTE := 1; END IF; END LOOP; IF EXISTEWORKFLOW = FALSE THEN DIFPRAZOSLA := 1; FOR CONSULTA IN (SELECT ACAO.NM_ACAO NM_ACAO, DA.DT_CONFIRMACAO DT_CONFIRMACAO, DA.DT_INICIO DT_INICIO, DA.DT_ENCERRAMENTO DT_ENCERRAMENTO, DA.DS_SUB_PROCESSO DS_SUB_PROCESSO, ACAO.NO_DIAS NO_DIAS, ACAO.DS_FASE FASE, ACAO.CD_RESPONSAVEL RESPONSAVEL, SACAO.DS_STATUS STATUSCOTACAO, COT.DT_DESISTENCIA DT_DESISTENCIA, COT.DT_RECUSA DT_RECUSA, PROP.DT_CANCELAMENTO DT_CANCELAMENTO, COT.CD_COTACAO CD_COTACAO, WC.CD_WORKFLOW CD_WORKFLOW, ACAO.DS_STATUS_ABERTURA DS_STATUS_ABERTURA, ACAO.DS_STATUS_ENCERRAMENTO DS_STATUS_ENCERRAMENTO FROM SMV_COTACAO COT JOIN SMV_PROPOSTA PROP ON PROP.CD_COTACAO = COT.CD_COTACAO JOIN SMV_WORKFLOW_COTACAO WC ON WC.CD_COTACAO = COT.CD_COTACAO AND WC.CD_COTACAO = PROP.CD_COTACAO JOIN SMV_ACAO ACAO ON ACAO.CD_ACAO = WC.CD_ACAO JOIN SMV_DETALHE_ACAO DA ON DA.CD_WORKFLOW = WC.CD_WORKFLOW JOIN SMV_STATUS_ACAO SACAO ON SACAO.CD_STATUS_ACAO = ACAO.CD_STATUS_ACAO_ABERTURA WHERE COT.CD_COTACAO = P_CD_COTACAO ORDER BY DT_INICIO ASC) LOOP IF CONSULTA.DS_SUB_PROCESSO = 'INI' THEN DATAINICIO := CONSULTA.DT_INICIO; END IF; DATAFIM := CONSULTA.DT_ENCERRAMENTO; RESPONSAVEL := CONSULTA.RESPONSAVEL; FASE := CONSULTA.FASE; STATUSCOTACAO := CONSULTA.STATUSCOTACAO; STATUSACAOCOTACAO := CONSULTA.DS_STATUS_ENCERRAMENTO; TEMPOPROCESSO := NUMERODIAS - PRAZOSLA; IF CONSULTA.DT_RECUSA IS NOT NULL THEN PENDENTE := 0; STATUSACAOCOTACAO := 'Recusada'; STATUSCOTACAO := 'RECUSADA'; exit; END IF; IF STATUSCOTACAO = 'RECUSADA' THEN PENDENTE := 0; STATUSACAOCOTACAO := 'Recusada'; exit; END IF; IF STATUSCOTACAO = 'COTACAO_PENDENCIA' THEN PENDENTE := 1; END IF; END LOOP; END IF; R := TY_REG_CONSULTA_STATUS_GRID(P_CD_COTACAO, DIFPRAZOSLA, TEMPOPROCESSO, STATUSACAOCOTACAO, RESPONSAVEL, FASE, STATUSCOTACAO, DATAINICIO, DATAFIM, PRAZOSLA, NUMERODIAS, PENDENTE); PIPE ROW(R); RETURN; END SMVF_CONSULTA_STATUS_DT_GRID;
... View more