AJUDA POR FAVOR - Rodar rotina

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
druffes
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 31
Registrado em: Sex, 26 Jan 2007 6:23 pm
Localização: Campo Mourão - PR

Preciso testar (rodar) esse comado, mas não sei como, se alguém puder me ajudar ficaria muito grato.

Selecionar tudo

CURSOR c_pre_med IS
   SELECT tip_presc.cd_tip_presc, tip_presc.ds_tip_presc, pre_med.cd_atendimento
   FROM   dbamv.pre_med,
          dbamv.itpre_med,
          dbamv.tip_presc
   WHERE  itpre_med.cd_tip_esq = 'MOT'
   AND    pre_med.cd_pre_med = itpre_med.cd_pre_med
   AND    tip_presc.cd_tip_esq = 'MOT'
   AND    tip_presc.cd_tip_presc = itpre_med.cd_tip_presc
   AND    pre_med.cd_atendimento = v_cd_atendimento;
 
   CURSOR c_pre_med1 IS
   SELECT 1
   FROM   dbamv.pre_med
   WHERE  pre_med.cd_atendimento = v_cd_atendimento
   AND    pre_med.cd_unid_int    = :cd_unid_int
   AND    TRUNC(pre_med.dt_pre_med) BETWEEN v_dt_pre_med AND :data_final;
   --AND    pre_med.dt_pre_med BETWEEN :data_inicial AND :data_final
   --AND    TRUNC(pre_med.dt_pre_med) = v_dt_pre_med;
 
   v_tem_pre_med NUMBER := 0;
 
   v_pre_med c_pre_med%ROWTYPE;
BEGIN
   FOR v_atendimentos IN c_atendimentos LOOP
      v_cd_atendimento := v_atendimentos.cd_atendimento;
      v_dt_pre_med     := v_atendimentos.dt_pre_med;
      v_pre_med        := NULL;
      OPEN  c_pre_med;
      FETCH c_pre_med INTO v_pre_med;
      CLOSE c_pre_med;
      IF v_pre_med.ds_tip_presc IS NOT NULL THEN
         INSERT INTO dbamv.tip_presc_aux_h9j VALUES (v_pre_med.cd_tip_presc,1,v_cd_atendimento);
      ELSE
         v_tem_pre_med := 0;
         OPEN  c_pre_med1;
         FETCH c_pre_med1 INTO v_tem_pre_med;
         CLOSE c_pre_med1;
         IF v_tem_pre_med = 1 THEN
            -- 'NÃO DEFINIDO'
            INSERT INTO dbamv.tip_presc_aux_h9j VALUES (NULL,1,v_cd_atendimento);
         ELSE
            -- '>>>SEM/ADMISSÃO<<<'
            INSERT INTO dbamv.tip_presc_aux_h9j VALUES (0,1,v_cd_atendimento);
         END IF;
      END IF;
   END LOOP;
   FORMS_DDL('COMMIT');
   MESSAGE('Atenção. Processo Finalizado com Sucesso.');
EXCEPTION
   WHEN OTHERS THEN
      MESSAGE(SQLERRM);
      MESSAGE(' ');
END;
Obrigado.
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
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ê pode se conectar no SQL*Plus, por exemplo.
Aí você roda assim:

Selecionar tudo

declare
CURSOR c_pre_med IS
   SELECT tip_presc.cd_tip_presc, tip_presc.ds_tip_presc, pre_med.cd_atendimento
   FROM   dbamv.pre_med,
          dbamv.itpre_med,
          dbamv.tip_presc
   WHERE  itpre_med.cd_tip_esq = 'MOT'
   AND    pre_med.cd_pre_med = itpre_med.cd_pre_med
   AND    tip_presc.cd_tip_esq = 'MOT'
   AND    tip_presc.cd_tip_presc = itpre_med.cd_tip_presc
   AND    pre_med.cd_atendimento = v_cd_atendimento;
 
   CURSOR c_pre_med1 IS
   SELECT 1
   FROM   dbamv.pre_med
   WHERE  pre_med.cd_atendimento = v_cd_atendimento
   AND    pre_med.cd_unid_int    = :cd_unid_int
   AND    TRUNC(pre_med.dt_pre_med) BETWEEN v_dt_pre_med AND :data_final;
   --AND    pre_med.dt_pre_med BETWEEN :data_inicial AND :data_final
   --AND    TRUNC(pre_med.dt_pre_med) = v_dt_pre_med;
 
   v_tem_pre_med NUMBER := 0;
 
   v_pre_med c_pre_med%ROWTYPE;
BEGIN
   FOR v_atendimentos IN c_atendimentos LOOP
      v_cd_atendimento := v_atendimentos.cd_atendimento;
      v_dt_pre_med     := v_atendimentos.dt_pre_med;
      v_pre_med        := NULL;
      OPEN  c_pre_med;
      FETCH c_pre_med INTO v_pre_med;
      CLOSE c_pre_med;
      IF v_pre_med.ds_tip_presc IS NOT NULL THEN
         INSERT INTO dbamv.tip_presc_aux_h9j VALUES (v_pre_med.cd_tip_presc,1,v_cd_atendimento);
      ELSE
         v_tem_pre_med := 0;
         OPEN  c_pre_med1;
         FETCH c_pre_med1 INTO v_tem_pre_med;
         CLOSE c_pre_med1;
         IF v_tem_pre_med = 1 THEN
            -- 'NÃO DEFINIDO'
            INSERT INTO dbamv.tip_presc_aux_h9j VALUES (NULL,1,v_cd_atendimento);
         ELSE
            -- '>>>SEM/ADMISSÃO<<<'
            INSERT INTO dbamv.tip_presc_aux_h9j VALUES (0,1,v_cd_atendimento);
         END IF;
      END IF;
   END LOOP;
   FORMS_DDL('COMMIT');
   MESSAGE('Atenção. Processo Finalizado com Sucesso.');
EXCEPTION
   WHEN OTHERS THEN
      MESSAGE(SQLERRM);
      MESSAGE(' ');
END;
/
Poe um declare que está faltando no bloco, e executa com a barra embaixo.
druffes
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 31
Registrado em: Sex, 26 Jan 2007 6:23 pm
Localização: Campo Mourão - PR

Muito Obrigado...
Mas se eu quiser testar somente os INSERTS como faço?
Desculpe o abuso.
Obrigado..
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
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

Daí você executa só os inserts :-D

Selecionar tudo

SQL> INSERT INTO dbamv.tip_presc_aux_h9j VALUES (0,1,'seutexto')
/
Outra opção é comentar na rotina o que você não quer que rode...
Avatar do usuário
Toad
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 253
Registrado em: Sex, 18 Nov 2005 2:14 pm
Localização: Seattle, WA
Contato:
Matheus Gonçalves
matheus.dev
twitter.com/developer__c

Há também a opção de testar usando o PL/SQL Developer, que é uma ferramenta show de bola. Ela permite inclusive testar as procedures e functions, com debug e acesso aos valores das variáveis.
Mas se você fizer o que o Dr. disse, vai funcionar certinho!!
Ah... pra comentar, claro:

Para comentar uma linha:

Selecionar tudo

-- seu_codigo_aqui;


Para comentar um bloco inteiro:

Selecionar tudo

/*
seu_codigo_aqui;
seu_codigo_aqui;
seu_codigo_aqui;
seu_codigo_aqui;
seu_codigo_aqui;
*/
É simples, mas já vi gente me perguntando isso... então aí está!
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 8 visitantes