日期:2014-05-17  浏览次数:20937 次

学习oracle函数,编译有错误,请大侠们指点下
CREATE OR REPLACE FUNCTION F_YTBSF(YYRYJF1 NUMBER, YYYWBZ2 NUMBER,YYZXGZJF3 NUMBER,YYQYFCJF4 NUMBER,YYJBJSZJ5 NUMBER,SJGY6 NUMBER,QTYT7 NUMBER) return VARCHAR2
       IS
       YTBSF VARCHAR2(32);
       M1 VARCHAR2(2);
       M2 VARCHAR2(2);
       M3 VARCHAR2(2);
       M4 VARCHAR2(2);
       M5 VARCHAR2(2);
       M6 VARCHAR2(2);
       M7 VARCHAR2(2);

BEGIN
       IF YYRYJF1<>0 then M1:= '1,';   else M1:='' end IF ;
       IF YYYWBZ2<>0 then M2:= '2,';   else M1:='' end IF ;
       IF YYZXGZJF3<>0 then M3:= '3,';   else M1:='' end IF ;
       IF YYQYFCJF4<>0 then M4:= '4,';   else M1:='' end IF ;
       IF YYJBJSZJ5<>0 then M5:= '5,';   else M1:='' end IF ;
       IF SJGY6<>0 then M6:= '6,';   else M1:='' end IF ;
       IF QTYT7<>0 then M7:= '7,';   else M1:='' end IF ;
       
       YTBSF:=m1||m2||m3||m4||m5||m6||m7 ;
       
       IF mod(len(YTBSF),2)=0 then RETURN(left(YTBSF,len(YTBSF)-1)); 
          else  
            RETURN(YTBSF);
       end IF;      
       
END F_YTBSF;

------解决方案--------------------
问题很多啊。
oracle中len对应的函数是length
oracle截取字符串是substr
还没有,你的每一句m1:=‘’后面都少一个;