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 开发人员),关于如何设置时间格式的任何指示?

提前致谢

4

1 回答 1

1

DBMS_SESSION.SET_NLS过程不会引发任何异常。但是,如果 value 参数表示 a 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 回答