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

Oracle-レコードを更新し、同じクエリで更新日を返します

    おそらく、プレーンJDBC と比較してコードを単純化するために、JDBCTemplateを使用することにしました。 。

    この特定の問題は、IMHOがプレーンJDBCを作成します。 その他の回答 で提案されているソリューション はるかに単純なので、JDBCTemplateからデータベース接続を取得し、JDBCの方法で挿入することを強くお勧めします。

    私の頭に浮かぶJDBCTemplateを使用した最も簡単な解決策は、挿入をPROCEDUREでラップすることです。 タイムスタンプをOUTとして返します パラメータ。

    簡単な例(必要に応じて時間ログを調整します)

    create procedure insert_with_return_time (p_str VARCHAR2, p_time OUT DATE) as
    BEGIN 
       insert into identity_pk(pad) values(p_str);
       p_time := sysdate;
    END;
    /
    

    呼び出しはSimpleJdbcCallを使用して行われます

    SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate).withProcedureName("insert_with_return_time");
    SqlParameterSource params = new MapSqlParameterSource().addValue("p_str", str);
    Map<String, Object> out = jdbcCall.execute(params);
    

    Map 戻り値が含まれます。例: [P_TIME:2019-10-19 11:58:10.0]

    しかし、繰り返すことしかできません。この特定のユースケースでは、IMHOJDBCがJDBCTemplateからの救済です。;)



    1. スクレープされたテーブルデータをPostgreSQLデータベースに直接挿入します

    2. SQLServerデータベースですべての外部キー制約を無効にする方法-SQLServer/TSQLチュートリアルパート77

    3. PHPでISO8601を日付形式に変換する方法

    4. MySQLで最高得点者を取得する