2013-07-17 41 views
1

好,第一I識別用於特定日期的日期整數,起從我需要的隨機值更新到dpm_dateto柱:更新隨機日期,以一個單一的柱(日期repeates)

查詢:

select to_char(to_date('15/05/2013','dd/mm/yyyy'), 'J') from dual; 

結果:

2456428 

現在,我嘗試使用下面的查詢來更新dpm_dateto柱:

update t_dailypm 
set dpm_dateto = 
    (select to_date(trunc(dbms_random.value(2456428,2456428+76)), 'J') from dual) 
where dpm_loc = 'P2' and dpm_department like '%IN%'; 

結果:

900 rows updated. 

但是,問題是,在dpm_dateto列中的每個不同值與同一日期更新。我無法理解這一點。請幫助。

回答

4

請勿使用子查詢。
只需set = your_expression,就像下面的例子。
甲骨文優化子查詢,並評估它只有一次,但表情會爲每一行進行評估:

create table xyz(
    abc date 
); 

insert into xyz 
select sysdate from dual 
connect by level < 6; 

select * from xyz; 

ABC  
-------- 
13/07/17 
13/07/17 
13/07/17 
13/07/17 
13/07/17 

現在:

update xyz set abc = to_date(trunc(dbms_random.value(2456428,2456428+76)), 'J'); 

select * from xyz; 

ABC  
-------- 
13/06/14 
13/07/23 
13/07/26 
13/06/24 
13/07/10 
+0

感謝您的更新kordirko..I只是刪除了子查詢瞧!!!再次感謝! – user1728293

+0

P.S. - 將select(to_date(trunc ...)替換爲簡單的to_date(trunc ..構造,並且在未進行優化的情況下更新。 – user1728293

相關問題