- Este tópico contém 4 respostas, 2 vozes e foi atualizado pela última vez 15 anos, 10 meses atrás por
fsitja.
-
AutorPosts
-
11 de maio de 2010 às 10:19 pm #93946
Thiago Vilhena
ParticipantePessoal existe uma maneira de fazer um select ou algo parecido para que gere inserts de um certo periodo de tempo? por exemplo gostaria de inserir em um campo de data todos os dias e meses de 2009 até 2020, qual a melhor maneira de fazer isso?
insert into teste(2009-01-01)
insert into teste(2009-01-02)
insert into teste(2009-01-03)
insert into teste(2009-01-04)11 de maio de 2010 às 10:46 pm #93947fsitja
ParticipanteDá para gerar todos os dias com uma query hierárquica (connect by), e inserir as linhas na tabela com um insert .. select.
O select seria assim:
SQL> select dt_ini + level - 1 dt
2 from (select trunc(to_date(ano_inicio, 'YYYY'), 'YYYY') dt_ini,
3 trunc(to_date(ano_fim + 1, 'YYYY'), 'YYYY') - 1 dt_fim
4 from (select 2009 ano_inicio, 2020 ano_fim from dual)) t
5 connect by level <= dt_fim - dt_ini + 1;DT
1/1/2009
2/1/2009
3/1/2009
4/1/2009
5/1/2009
6/1/2009
...
... etc
É só colocar os anos que você quer lá, se for o caso de mudar 2009 e 2020 como início e fim, respectivamente.
Exemplo de execução com insert:
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0
Connected as fsitjaSQL>
SQL> create table t1 (dt date);Table created
SQL> insert into t1 (dt)
2 select dt_ini + level - 1 dt
3 from (select trunc(to_date(ano_inicio, 'YYYY'), 'YYYY') dt_ini,
4 trunc(to_date(ano_fim + 1, 'YYYY'), 'YYYY') - 1 dt_fim
5 from (select 2009 ano_inicio, 2020 ano_fim from dual)) t
6 connect by level
12 de maio de 2010 às 1:55 am #93952Thiago Vilhena
ParticipanteIhhhh manuhh.. vlwwww.. funcionou show de bola!!!
12 de maio de 2010 às 5:54 pm #93965Thiago Vilhena
ParticipantePo.. aproveitando aqui o mesmo topico, tipo eu gostaria de criar uma procedure que execute essa query
SELECT SYSDATE,
LAST_DAY(SYSDATE) "Last",
LAST_DAY(SYSDATE) - SYSDATE "Days Left"
FROM DUAL;e mostre na tela quantos dias faltam para virar o mes, dai feito isso se os dias para virada do mes forem menor que 3, verificar se a tabela que esta chamando na procedure já esta particionada pra aquele respectivo mes, caso ela nao esteja particionada pra aquele mes, tem que executar uma DDL de particionamento daquela tabela.
rsrs ta arduo isso =D quem puder ajudar ai =D
12 de maio de 2010 às 9:56 pm #93978fsitja
ParticipanteTalvez seja melhor abrir num tópico novo a segunda pergunta, para o pessoal ver na listagem pelo assunto. Eu não tenho privilégio de DBA aqui no trabalho para testar agora, vou ter que ver isso em casa mais tarde.
Abraço,
Francisco. -
AutorPosts
- Você deve fazer login para responder a este tópico.