2017-05-29 3 views
-1

ディレクトリにあるすべてのSQLファイルをリモートから照会してCSVファイルを出力するJavaアプリケーションがあります。これは、SQLファイルにSELECTコマンドがあれば効果的です。しかし、正しい形式でdatetimesを取得するために、私はALTERセッションコマンドを使用したいと思います。これは、各コマンドを新しいファイルとして扱うため、Javaアプリケーションでエラーを生成します。残念ながら、Javaアプリケーションのコードベースにアクセスすることはできません。基本的に、SQLは、それぞれ次のようになりファイル:Linuxのコマンドラインからalter sessionを使用して実行しているOracle SQLスクリプト

alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss'; 

SELECT * from sample_table 

は、単一の実行されたクエリとして実行するように編集したSQLファイルを実行する方法はありますか?

答えて

1

alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';はDDL文です。これをDML文として実行することはできません。 Java Statementクラスは、このALTER SESSION ...クエリを実行するためには動作しません。

さらに、データベース接続の観点から言えば、次回は同じ値を保持しないで、適用されるセッションまで有効です。

このアプローチを使用してこの変更を永続的に行うことはできません。別のアプローチがあります。ここではオフトピックです(同じ要望を感じたら、私は知っています。数日)。

あなたの結果をどのように達成しようとしているのかが間違っています。

日時をに表示する形式にコンテンツをフォーマットする場合、SELECTクエリとともにALTER SESSIONコマンドは必要ありません。

to_char(yourDate, 'YYYY-MM-DD HH24:MI:SS') as customDateを使用し、メインの選択クエリに調整してみてください。

+0

alter sessionコマンドを使用しないと、テーブルのdatetimeフィールドはmm/dd/yyyyとしてのみ出力されます。時間、分、秒も含めて、選択クエリで完全な日時を強制するにはどうすればよいですか? – Marc

+1

@Marc - 最後の行を確認してください。 –

+0

これで、私のためのdatetimesが出力に正しく表示されます。だから、ちょうど表示がmm/dd/yyyyを表示しているにもかかわらず、WHEREステートメントで明確にするために、私がdatetimesで行う比較は、実際には2番目の比較になります。セッションを変更する唯一のことは、それがどのように表示されるかです。 – Marc

関連する問題