sql >> データベース >  >> RDS >> Oracle

Oracleの別のテーブルからテーブルを更新します

    この場合、以下のようにMERGEステートメントを使用する必要があります。

    DECLARE
      l_date DATE:=TO_DATE('01/04/2017','DD/MM/YYYY');
    BEGIN
      LOOP
        EXECUTE IMMEDIATE 'MERGE INTO EMPSHIFT E
    USING SCHEDULEEMPLOYEES S
    ON (S.EMPLOYEEID=E.EMPLOYEEID AND S.DAYDATE=TO_DATE('''||TO_CHAR(l_date)||''',''DD/MM/YYYY''))
    WHEN MATCHED 
    THEN UPDATE SET E."'||TO_CHAR(l_date)||'"=S.SHIFT';
        l_date:=l_date+1;
        EXIT
      WHEN l_date>TO_DATE('30/04/2017','DD/MM/YYYY');
      END LOOP;
    END;
    

    レコードを更新するとおっしゃいましたが、不足しているレコードを挿入したい場合(EMPSHIFTテーブルにEMPLOYEEIDがない場合)、 merge_insert_clause



    1. 既存の設定を失うことなくMySQLのsql_modeにオプションを追加する方法

    2. Toad for Oracle ..複数のステートメントを実行する方法は?

    3. SQL * Plusは、SQLDeveloperが実行するSQLスクリプトを実行しません

    4. 初心者のためのSQLAND演算子