为每次执行的oracle更改NLS_DATE_LANGUAGE
有个job,用于每天执行删除过期数据,但现在有个存储时间的字段是varchar2,值是'01JAN10',字符集是中文字符集,这样当执行的时候就无法用to_date()进行转换,如果每次调用ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';就可以执行,但这个语句现在无法放在下面job中的begin前或后,单独执行一次ALTER,再执行job是可以的,但当job建立之后,每次就不会执行ALTER了,有什么办法么?
DECLARE
job_table number;
BEGIN
dbms_job.submit(job => job_table,
what => ' clear_table;',
next_date => trunc(SYSDATE)+1085/1440,
interval => 'trunc(sysdate)+1085/1440');
commit;
end;
后来尝试了:
declare
job_pre_ldp number;
sql_string varchar2(2000);
BEGIN
sql_string := 'ALTER SESSION SET NLS_DATE_LANGUAGE='''||'AMERICAN'||'''';
execute immediate sql_string;
dbms_job.submit(job => job_pre_ldp,
what => 'clear_pre_ldp;',
next_date => trunc(SYSDATE)+1125/1440,
interval => 'trunc(sysdate)+1125/1440');
commit;
end;
也不行,请高手指点!