0

xmltype 列に挿入するストアド プロシージャがあります。列は、日時型の列を持つスキーマを参照しています。日付は次のようにフォーマットする必要があります: YYYY-MM-DD"T"HH24:MI:SS

匿名ブロックを介してテストすると、ALTER SESSION を発行して時間形式を現在のセッションに変更できます

alter session set nls_timestamp_format = 'YYYY-MM-DD"T"HH24:MI:SS';

insert into table1 (id, xmlcolumn) values (1, updatexml(
   '/root/order/id/text()', p_order_id,
   '/root/order/date/text()', to_timestamp(sysdate,'DD-MON-RRRRHH:MI:SS.FF')
));

ただし、これをストアド プロシージャに移動すると、Oracle によって ALTER SESSION を使用できなくなります。

DBMS_SESSION.SET_NLS('nls_timestamp_format','YYYY-MM-DD"T"HH24:MI:SS');

しかし、SQL Developerは無効なオプションと言います。

私はOracleに非常に慣れていません(SQL DB Devであるため)、時間形式を設定する方法についての指針はありますか?

前もって感謝します

4

1 に答える 1

1

このDBMS_SESSION.SET_NLSプロシージャは例外を発生させません。ただし、値パラメーターがformat mask( にあるdouble-quoted)を表す場合は、ALTER SESSION commandで囲む必要がありますtriple quotes。そうしないと、次の Oracle エラーが発生します: ORA-00922: オプションが見つからないか無効です。 これを試して:

DBMS_SESSION.SET_NLS('nls_timestamp_format','''YYYY-MM-DD "T"HH24:MI:SS''');
于 2012-07-17T19:33:35.143 に答える