2016-04-25 1 views
0

私はcreated_dateに基づいて 'table1'からレコードを読み取ろうとしています。 table1のcreated_dateがcurrent_dateよりも小さい場合は、table2のBoolean列を更新する必要があります。Oracle DBのストアド・プロシージャを使用して、表を読み込んで別の表を更新するにはどうすればよいですか?

例えば:私はIDが現在の日付よりも少ないcreated_dateための表1からIDがどこにある表2の列Col_Booleanを更新する必要が

Table 1 

    ID Col1 Col2 Created_Date 
    1 test test 25-Apr-2016 
    2 test test 23-Apr-2016 

    Table 2 

    ID Col11 Col12 Col_Boolean 
    2 test test false 

+1

/どこのコードは、あなたが持つ問題を抱えているのか? –

+0

@FrankSchmitt - 私は何も試していません:-)私はクエリとストアドプロシージャの新機能です –

+0

テーブル2にID = 2の行が既に存在し、ブール値を更新するだけですか?そしてもしそうなら、ID = 1の行もまたどのようになり、ブール値はTrueに設定されますか?あなたのケースに対する解決策は、UPDATEまたはINSERTではなくMERGEであるかもしれませんが、それはあなたがSQLの研究にいる場所よりも進んでいます。ところで、Oracleデータベースにはブール型データ型がないことに気付いています。ブールをエミュレートするには、charまたはvarchar2データ型を使用する必要があります。チェック制約がTまたはFのいずれかにしか許可されない場合、おそらくCol_Booleanがchar(1)型であることが最適です。 – mathguy

答えて

1
update table_2 set col_boolean 'false' 
    where id in (select id from table_1 where created_date < sysdate); 
0
update table2 set col_boolean = 'false' 
where exists (select null 
      from table1 
      where table1.id = table2.id 
      and table1.created_date < sysdate); 
正確にあなたが試してみました何