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

動的テーブル名を持つテーブルへのUPSERT

    MERGEは、ネイティブ動的SQL(EXECUTE IMMEDIATE)で完全に正常に機能します。

    create table so_test(pk number not null primary key, value varchar2(20));
    
    insert into so_test(pk, value) values(1, 'one');
    
    declare
      l_SQL varchar2(4000);
      l_tablename varchar2(4000) default 'so_test';
    begin
      l_SQL := 'merge into ' || l_tablename || ' target' ||
        ' using (select 1 pk, ''eins'' value from dual union all
                 select 2 pk, ''zwei'' value from dual) source
          on (target.pk = source.pk)
          when matched then 
            update set target.value = source.value
          when not matched then
            insert values(source.pk, source.value)      
      ';
      dbms_output.put_line(l_sql);
      execute immediate l_SQL;
    end; 
    

    MERGE使用時に表示されるエラーメッセージを投稿していただけますか?



    1. MariaDBサーバーをDockerコンテナにデプロイする方法

    2. SQLite JSON_PATCH()

    3. AndroidでSQLiteデータベースを処理するメソッドをテストする方法は?

    4. Postgresの2つの日付の間の日曜日を除く日数を数える方法は?