当输入时间不为空时,输出时间为输入时间。否则为输出时间是系统时间。
在PL/SQL作调试,发现无论我的输入是什么,它永远不会走
outTime :=to_date(inTime,'MM/DD/YYYY HH24:MI:SS');,说明条件inTime !='' 永远不满足,不为空怎么表示?我试过 is not null 也不对代码如下:
CREATE OR REPLACE PROCEDURE "time" (inTime varchar2,outTime out date) is
  BEGIN
    if inTime !='' then
       outTime :=to_date(inTime,'MM/DD/YYYY HH24:MI:SS');
       dbms_output.put_line(inTime ->outTime );-----
    else
       outTime :=SYSDATE;
       dbms_output.put_line(inTime ->outTime * outTime:=SYSDATE');-----
    end if;
  EXCEPTION
    WHEN OTHERS THEN
    outTime :=SYSDATE;
    dbms_output.put_line('SYSDATE->outTime );-----
  END;

解决方案 »

  1.   

    那你可以翻过来,判断空做什么,然后else不空咯。
    或者用length(inTime) != 0 判断不空。
      

  2.   

    在oracle 中 ''=''是不成立的建议用其它字符判断,或进行转换
      

  3.   

    判断是否为空用 if inTime is not null then就可以了
      

  4.   

    你的代码怎么那么奇怪?
    过程名干嘛加引号?还和oracle关键字相同
    程序中有多出单引号不匹配
      

  5.   

    CREATE OR REPLACE PROCEDURE "time" (inTime varchar2,outTime out date) is
    BEGIN
    if (inTime !='') or (inTime is null) then
    outTime :=to_date(inTime,'MM/DD/YYYY HH24:MI:SS');
    dbms_output.put_line(inTime ->outTime );-----
    else
    outTime :=SYSDATE;
    dbms_output.put_line(inTime ->outTime * outTime:=SYSDATE');-----
    end if;
    EXCEPTION
    WHEN OTHERS THEN
    outTime :=SYSDATE;
    dbms_output.put_line('SYSDATE->outTime );-----
    END;
    试试看!