Pular para o conteúdo
  • Este tópico contém 16 respostas, 4 vozes e foi atualizado pela última vez 15 anos, 3 meses atrás por DBA_LUCAS.
Visualizando 15 posts - 1 até 15 (de 17 do total)
  • Autor
    Posts
  • #96874
    DBA_LUCAS
    Participante

      Informações do Ambiente:
      * Versão do Oracle: ORACLE 11G 11.2.0.1
      * Sistema Operacional: LINUX

      Prezados amigos,

      Tenho uma duvida a respeito de alterar o formato da data no banco de dados , ja me deparei muitas vezes quando um programador precisa que eu altere o formato da data do banco para que seja realizados testes nos software, para alterar o formato da data a nivel de sessao é facil via sql plus , mas quando eu preciso alterar o formato da data do banco inteiro para que realizem testes a nivel da aplicação , como eu faço isso ?

      #96876
      burga
      Participante

        você pode criar uma trigger de logon, pra quando a aplicação se conectar ao banco, altere a formatação da data a nível de sessão.

        #96877
        DBA_LUCAS
        Participante

          Como eu faço isso , voce pode me auxiliar ? porque com certeza isso é mais interessante que alterar o banco de dados inteiro …

          #96880
          burga
          Participante

            [quote=”DBA_LUCAS”:1icrck33]Como eu faço isso , voce pode me auxiliar ? porque com certeza isso é mais interessante que alterar o banco de dados inteiro …[/quote]

            Exato, também prefiro desta forma a mudar permanentemente a formatação da data no banco.

            Segue um exemplo de como pode ser feito:

            create or replace trigger trg_logon
            after logon on database
            begin
            if (user in ('usuario_aplicacao1','usuario_aplicacao2')) then
            alter session set nls_date_format = 'dd/mm/yyyy hh24:mi:ss';
            end if;
            end trg_logon;

            Deve ser algo assim… Pode ter algum erro pois não testei, mas mesmo que der erro o caminho é por aí!!!

            #96895
            DBA_LUCAS
            Participante

              No lugar do USUARIO_APLICAÇÃO1 eu coloco o que ? o DLLHost ?

              #96896
              burga
              Participante

                A aplicação se conecta ao banco utilizando algum(ns) usuário(s) de banco (dono da sessão). O que você deve colocar aí é o nome deste(s) usuário(s)…

                Exemplo: ‘SYSTEM’, ‘SYS’, ‘SCOTT’, ‘HR’…

                #96898
                DBA_LUCAS
                Participante

                  Intendi , mais uma duvida , no meu banco de dados tenho varios usuarios , onde a area de teste por exemplo pode ter mais de uma pessoa conectada a um usuario simultaneamente , a duvida é:

                  se eu colocar:


                  create or replace trigger trg_logon
                  after logon on database
                  begin
                  if (user in ('PRODUCAO')) then
                  alter session set nls_date_format = 'dd/mm/yyyy hh24:mi:ss';
                  end if;
                  end trg_logon;

                  entao todos que se conectarem ao usuario PRODUCAO irao entrar com o formato da data que eu colocar na trigguer ?

                  #96899
                  DBA_LUCAS
                  Participante

                    Ou voce esta falando do usuario do SO ?

                    #96902
                    burga
                    Participante

                      [quote=”DBA_LUCAS”:3sqi4dsf]Intendi , mais uma duvida , no meu banco de dados tenho varios usuarios , onde a area de teste por exemplo pode ter mais de uma pessoa conectada a um usuario simultaneamente , a duvida é:

                      se eu colocar:


                      create or replace trigger trg_logon
                      after logon on database
                      begin
                      if (user in ('PRODUCAO')) then
                      alter session set nls_date_format = 'dd/mm/yyyy hh24:mi:ss';
                      end if;
                      end trg_logon;

                      entao todos que se conectarem ao usuario PRODUCAO irao entrar com o formato da data que eu colocar na trigguer ?[/quote]

                      É isso mesmo, todos que se conectarem como PRODUCAO vão ter a formatação da data na sessão alterada… Não é o usuário do SO.

                      #96903
                      DBA_LUCAS
                      Participante

                        Mais uma coisa , essa trigguer eu crio dentro do banco , tipo logado como SYSDBA ?

                        #96905
                        fsitja
                        Participante

                          O correto mesmo seria o desenvolvedor nunca utilizar conversão implícita de data. Sempre é preciso ter um to_char ou to_date na comparação de tipos diferentes e na conversão de dados.

                          Caso contrário, a aplicação fica depedente de configuração no servidor e bastante sujeita a bugs inesperados.

                          #96909
                          burga
                          Participante

                            Isto que o fsitja falou também deve ser levado em consideração.

                            Uma aplicação bem escrita deve estar preparada pra receber qualquer formatação de data vinda do banco e formatá-la de acordo com o que se deseja obter…

                            Mais uma coisa , essa trigguer eu crio dentro do banco , tipo logado como SYSDBA ?

                            Você pode criar a trigger com qualquer usuário que tiver o privilégio ADMINISTER DATABASE TRIGGER. Só NÃO é recomendado usar os usuários SYS e SYSTEM.

                            GRANT ADMINISTER DATABASE TRIGGER TO SEU_USUARIO;

                            #96912
                            DBA_LUCAS
                            Participante

                              Sempre e usado TO_CHAR e TO_DATE , mas sempre aparece um ou outro querendo que muda a data para fazer testes , ai em vez de afeta o banco inteiro minha intencao era essa , afetar apenas 1 caso !!!

                              Muito Obrigado a todos !

                              #96937
                              Peterson
                              Participante

                                Lucas, caso queira alterar o formato de exibição padrão de datas, altere o parâmetro NLS_DATE_FORMAT.

                                #96938
                                DBA_LUCAS
                                Participante

                                  Quando eu tento visualizar …


                                  SQL> show parameter nls_date_format

                                  NAME TYPE VALUE


                                  nls_date_format string

                                  nao tem valor , fiquei na duvida qual data esta configurada …

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