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

匿名のPLSQLブロックの結果を取得する

    暗黙的だからです 日付変換が失敗しています。 TO_DATE()を追加します 日付文字列を日付変数に直接割り当てる代わりに。 java.sql.Dateの場合 が使用される場合、TO_DATE() 必須ではありません。

    暗黙的な変換は通常、セッションのNLS_DATE_FORMATに依存します 。

    あなたの場合、in_cnt__date DATE := '&1' 犯人です。 &1 実際には日付への変換が試みられます。したがって、例外がスローされます!

    public static final String CONTEXT = "DECLARE in_cnt__date DATE := ? ;" +
    "hv_cnt_id NUMBER := 0; " +
    "BEGIN DBMS_OUTPUT.ENABLE (NULL); " +
    "INSERT INTO dt_contexts (CNT_ID, CNT_CONTEXT, CNT_TYPE, CNT_SOURCE, CNT_COMMENT, CNT_DATE, CNT_DATE_INSERT, CNT_DATE_UPDATE) " +
    "VALUES (0, 'EPE_CONTEXT', 'ROUTE', 'bdd', 'Built from ROUTE', in_cnt__date, SYSDATE, SYSDATE); " +
    "SELECT SEQ_DT_CNT_ID.CURRVAL INTO hv_cnt_id FROM DUAL; " +
    "? := hv_cnt_id;
    "EXCEPTION WHEN OTHERS THEN RAISE ; END;";
    

    そして、

    cs.setDate(1, (java.sql.Date) Route.datePrf);
    

    in_cnt__dateの日付を設定します;

    最後に、hv_cnt_idの値を取得します 以下がPL/SQLに追加されます ブロック

    "? := hv_cnt_id;"
    

    そして、JDBCから、次のようになります。

     cs.setDate(1, (java.sql.Date) Route.datePrf);
     cs.registerOutParameter(2, Types.NUMBER);
     cs.execute();
     contextId = cs.getInt(2);
    


    1. mySQLデータベースで既存のユーザーをチェックする最良の方法は?

    2. Laravel Bootstrapキャッシュ設定ファイルをクリーンアップする方法は?

    3. mysqlはどこにデータを保存しますか?

    4. INTとVARCHARの主キーの間に実際のパフォーマンスの違いはありますか?