Pular para o conteúdo
  • Este tópico contém 10 respostas, 4 vozes e foi atualizado pela última vez 14 anos, 3 meses atrás por Rodrigo Almeida.
Visualizando 11 posts - 1 até 11 (de 11 do total)
  • Autor
    Posts
  • #101816
    RomuloRDM
    Participante

      Bom dia,

      Tenho uma procedure (SP_INC_PLANOS_FICHAS) que é executada a partir do comando “exec SP_INC_PLANOS_FICHAS( 1,’1′,’1Z’)”, existe alguma forma de executar através de uma BAT, pois preciso que um usuario execute somente quando for gerar um relatorio.

      Att.

      RomuloRDM

      #101820
      rman
      Participante

        @RomuloRDM

        O ideal é que seja incluído isso dentro do sistema, isso evitaria que o usuário esqueça da executar isso, não sei qual é a gravidade de se esquecer de executar essa procedure.

        Mas se realmente você quer seguir esse caminho, é possível fazer um bat chamando o sqlplus.

        Faz assim, crie um arquivo inc_planos_fichas.sql


        exec SP_INC_PLANOS_FICHAS( 1,'1','1Z');
        exit;

        crie um inc_planos_fichas.bat


        sqplus usuario/senha@instancia @inc_planos_fichas.sql

        Importante, crie um usuário totalmente restrito, pois a senha estará exposta no bat.

        #101823
        felipeg
        Participante

          @Rman

          Qual a razão de não criar um schedule?

          Atenciosamente,
          Felipe.

          #101825
          rman
          Participante

            @felipeg

            Pelo o q eu o @RomuloRDM disse, é necessário executar antes do relatório, desta forma não se sabe ante mão qual é o horário para agendamento, ou o schedule tem alguma solução para isso ? Por isso não sugeri o schedule.

            #101827
            felipeg
            Participante

              É, a idéia dele ficou meio confusa.

              De que forma esse relatório é executado?
              O código dele é customizável?

              Dependendo da forma como o relatório é chamadogerado nem o bat vai resolver (além de ser muita gambiarra).

              Atenciosamente,
              Felipe.

              #101828
              rman
              Participante

                @felipeg

                É um workarround que pode comprometer toda a segurança, um usuário pode alterar os parâmetros da procedure, imagina o transtorno ?

                Eu realmente não aplicaria esse workarround.

                #101841
                RomuloRDM
                Participante

                  Boa tarde,

                  Muito obrigado pela dica, e seguindo todos os conselhos transformei o BAT em um EXE evitando que o usuario saiba a senha, agora só mais uma duvida, como posso automatizar a entrada de parametros quando se trata de datas, tenho uma outra chamada que usa a primeira data FIXA e o segundo parametro é a data de hoje -2 dias.
                  ’01/04/2011′,’23/11/2011′.

                  Mais uma vez obrigado pela dica, vou tomar os devidos cuidados.

                  Att.

                  RomuloRDM

                  #101843
                  felipeg
                  Participante

                    Já que ta usando executável da pra fazer de duas formas.

                    Pelo SO, pegando a váriavel de ambiente de data e diminuindo 2.
                    Ou pelo Oracle com sysdate-2.

                    Você escolhe.

                    Atenciosamente,
                    Felipe.

                    #101844
                    rman
                    Participante

                      @RomuloRDM

                      Se a data é fixa remova o parâmetro, deixe fixo dentro da procedure, se a regra também é fixa, deixei fixo também dentro da procedure.


                      SYSDATE-2

                      Isso já resolve a regra fixa.

                      #101845
                      rman
                      Participante

                        @RomuloRDM

                        A senha está protegido pelo exe, e o arquivo sql ? Vai deixar exposto ? Se deixar é um ponto de entrada no seu banco, permitindo que seja rodado comando arbitrários.

                        Como você gerou o exe ? Delphi ?

                        #101867
                        Rodrigo Almeida
                        Participante

                          Se o seu ambiente tem Grid Control, use a função MultiJobs, pois consegue definir através dele execução de jobs posteriores caso o job antecessor execute com sucesso.

                          Abraços,

                        Visualizando 11 posts - 1 até 11 (de 11 do total)
                        • Você deve fazer login para responder a este tópico.