- Este tópico contém 16 respostas, 4 vozes e foi atualizado pela última vez 15 anos, 3 meses atrás por
DBA_LUCAS.
-
AutorPosts
-
16 de novembro de 2010 às 9:44 pm #96874
DBA_LUCAS
ParticipanteInformações do Ambiente:
* Versão do Oracle: ORACLE 11G 11.2.0.1
* Sistema Operacional: LINUXPrezados 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 ?
16 de novembro de 2010 às 10:49 pm #96876burga
Participantevocê 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.
16 de novembro de 2010 às 11:20 pm #96877DBA_LUCAS
ParticipanteComo eu faço isso , voce pode me auxiliar ? porque com certeza isso é mais interessante que alterar o banco de dados inteiro …
17 de novembro de 2010 às 1:21 am #96880burga
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í!!!
18 de novembro de 2010 às 3:46 pm #96895DBA_LUCAS
ParticipanteNo lugar do USUARIO_APLICAÇÃO1 eu coloco o que ? o DLLHost ?
18 de novembro de 2010 às 4:02 pm #96896burga
ParticipanteA 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’…
18 de novembro de 2010 às 4:18 pm #96898DBA_LUCAS
ParticipanteIntendi , 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 ?
18 de novembro de 2010 às 4:19 pm #96899DBA_LUCAS
ParticipanteOu voce esta falando do usuario do SO ?
18 de novembro de 2010 às 4:56 pm #96902burga
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.
18 de novembro de 2010 às 5:25 pm #96903DBA_LUCAS
ParticipanteMais uma coisa , essa trigguer eu crio dentro do banco , tipo logado como SYSDBA ?
18 de novembro de 2010 às 8:28 pm #96905fsitja
ParticipanteO 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.
18 de novembro de 2010 às 9:40 pm #96909burga
ParticipanteIsto 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;19 de novembro de 2010 às 12:32 am #96912DBA_LUCAS
ParticipanteSempre 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 !
22 de novembro de 2010 às 8:40 pm #96937Peterson
ParticipanteLucas, caso queira alterar o formato de exibição padrão de datas, altere o parâmetro NLS_DATE_FORMAT.
22 de novembro de 2010 às 9:14 pm #96938DBA_LUCAS
ParticipanteQuando eu tento visualizar …
SQL> show parameter nls_date_formatNAME TYPE VALUE
nls_date_format string
nao tem valor , fiquei na duvida qual data esta configurada …
-
AutorPosts
- Você deve fazer login para responder a este tópico.