我用toda写的写面这个函数
CREATE OR REPLACE FUNCTION TIEXIN.GetTheTime
(OLDTIME INT) 
RETURN VARCHAR2
IS
THEHOUR int;
THEMIN int;
THESEC int;
STRTIME VARCHAR2(20000);
BEGIN
IF OLDTIME < 60 THEN
    STRTIME := TO_CHAR(OLDTIME) || '''秒''';
ELSE
    THEMIN := OLDTIME/60;
    THESEC := MOD(60,OLDTIME);
    IF THEMIN >= 60 THEN
        THEHOUR := THEMIN/60;
        THEMIN := MOD(60,THEMIN);
        STRTIME := TO_CHAR(THEHOUR) || '''小时''' || TO_CHAR(THEMIN) || '''分''' || TO_CHAR(THESEC) || '''秒''';
ELSE
STRTIME := TO_CHAR(THEMIN) || '''分''' || TO_CHAR(THESEC) || '''秒''';
    END IF;
END IF;
RETURN STRTIME; 
END GetTheTime;他总是报
PLS-00103: 出现符号 ""在需要下列之一时:
 begin case
   declare end exception exit for goto if loop mod null pragma
   raise return select update while with <an identifier>
   <a double-quoted delimited-identifier这个错误....请专家指教一下.....谢谢

解决方案 »

  1.   

    你这里面有什么非法字符,我COMMENT完了还运行不通过,后来自己按照你的写一遍通过;
    注意STRTIME VARCHAR2(20000); 没有20000的长度;SQL> CREATE OR REPLACE FUNCTION GETTHETIME(OLDTIME IN INT)
      2    RETURN VARCHAR2
      3  IS
      4    THEHOUR int;
      5    THEMIN int;
      6    THESEC int;
      7    STRTIME VARCHAR2(2000);
      8  BEGIN
      9    IF OLDTIME < 60 THEN
     10        STRTIME := TO_CHAR(OLDTIME) || '''秒''';
     11    ELSE
     12        THEMIN := OLDTIME/60;
     13        THESEC := MOD(60,OLDTIME);
     14        IF THEMIN >= 60 THEN
     15          THEHOUR := THEMIN/60;
     16          THEMIN := MOD(60,THEMIN);
     17          STRTIME := TO_CHAR(THEHOUR) || '''小时''' || TO_CHAR(THEMIN)   
                  || '''分''' || TO_CHAR(THESEC) || '''秒''';
     18       ELSE
     19       STRTIME := TO_CHAR(THEMIN) || '''分''' || TO_CHAR(THESEC) 
                       || '''秒''';
     20        END IF;
     21    END IF;
     22    return StrTime;
     23  END GETTHETIME;
     24  /Function created