我有一个将插入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开发人员),关于如何设置时间格式的任何指针?
提前致谢
答案 0 :(得分:1)
DBMS_SESSION.SET_NLS
程序不会引发任何异常。但是,如果value参数代表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''');