在Oracle过程中更改NLS_DATE_Format

时间:2018-08-01 05:48:24

标签: oracle plsql oracle11g

是否可以在Oracle的功能中更改def getCombinations5(list1): list1=list1 list2=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] #print list2 #str1='123456' str1=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27] #print str1 list3=[] for value in combi(str1,8): #print '#############################' #print list3 #print value #print list2[int(value[0])] list2[int(value[0])]=0 list2[int(value[1])]=0 list2[int(value[2])]=0 list2[int(value[3])]=0 list2[int(value[4])]=0 list2[int(value[5])]=0 list2[int(value[6])]=0 list2[int(value[7])]=0 #print list2 list3.append(list2[:]) #print list3 #print list3 list2[int(value[0])]=1 list2[int(value[1])]=1 list2[int(value[2])]=1 list2[int(value[3])]=1 list2[int(value[4])]=1 list2[int(value[5])]=1 list2[int(value[6])]=1 list2[int(value[7])]=1 #print '@@@@@@@@@@@@@@@@@' #print len(list3) #print list2 print len(list3) list4=[] for value in list3: str2=''.join(str(e) for e in value) if '00000000' in str2 or '0000000' in str2 or '000000' in str2 or '00000' in str2 or '0000' in str2: continue elif '000' in str2: continue else: list0=list(str2) #print list0 list0=map(int, list0) list4.append(list0) print list4

我有这样的功能

NLS_DATE_Format

但这给了我错误:

  

错误(8,4):PLS-00103:在预期以下情况之一时遇到符号“ ALTER”:如果循环模式为null,则返回goto声明退出;如果使用<<关闭当前删除,则返回选择更新锁定插入打开回滚保存点集sql执行commit forall合并管道将符号“ update插入到“ ALTER”之前才能继续。

我想在选择命令之前更改 create or replace Procedure GETFLOWSHEETRESULT ( .... ) AS BEGIN alter session set nls_date_format = 'DD-MM-YYYY HH24:MI:SS'; Select AVNR,Wert From E_MW_01MIN_MIT Where DBTM='17-06-2018 16:20:00' and AVNR In (2085,2075,2089,2071); alter session set nls_date_format = 'DD-MON-RR'; END GETFLOWSHEETRESULT; 。每次会话都一样,该如何更改?

1 个答案:

答案 0 :(得分:4)

最常见的是使用to_date函数将日期字符串转换为日期值。

Select AVNR,Wert 
From E_MW_01MIN_MIT 
Where  DBTM=to_date('17-06-2018 16:20:00','DD-MM-YYYY HH24:MI:SS') 
and AVNR In (2085,2075,2089,2071);

如果您仍要更改NLS_DATE_FORMAT,请尝试:

execute immediate 'alter session.... ';