create or replace function GET_LONG_PRIOR_PERIOD(Period in varchar2)
        RETURN NUMBER
    is
        v_return number;
        begin
            declare yy varchar2;
            declare mm varchar2;
            declare tmpDate varchar2;
            declare periodDate date;
            yy := substr(Period,1,4);
            mm := substr(Period,5);
            tmpDate := yy || '-' || mm || '-01';
            --periodDate := add_months(to_date(tmpDate,'yyyy-mm-dd'),1);
            v_return := (to_date(tmpDate,'yyyy-mm-dd')- to_date('1970-01-01 08:00:00','yyyy-mm-dd hh24:mi:ss')) * 86400000
            return v_return;
            
        end;
--在TOAD按F5,是提示ORA-00928,要怎么解决? 

解决方案 »

  1.   

    create or replace function GET_LONG_PRIOR_PERIOD(Period in varchar2) 
            RETURN NUMBER 
        as
            v_return number; 
            begin 
                yy varchar2(10); 
                mm varchar2(10); 
                tmpDate varchar2(20); 
                periodDate date; 
                yy := substr(Period,1,4); 
                mm := substr(Period,5); 
                tmpDate := yy||'-'||mm||'-01'; 
                v_return := (to_date(tmpDate,'yyyy-mm-dd')- to_date('1970-01-01 08:00:00','yyyy-mm-dd hh24:mi:ss')) * 86400000 
                return v_return; 
                
            end GET_LONG_PRIOR_PERIOD; 
    /declare不是你那样用的.
      

  2.   

    2楼,pls-00103错误:
    PLS-00103: 出现符号 "VARCHAR2"在需要下列之一时:
     := . ( @ % ;
    符号 ":=" 被替换为 "VARCHAR2" 后继续。