1

dpm_datetoさて、最初に特定の日付の日付整数を特定します。それ以降は、ランダム値を列に更新する必要があります。

クエリ:

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

1 に答える 1

4

サブクエリを使用しないでください。
以下の例のように、=your_expression を設定するだけです。
Oracle はサブクエリを最適化し、一度だけ評価しますが、式は行ごとに評価されます。

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
于 2013-07-17T10:28:48.140 に答える