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

函数没有返回值
SQL code

CREATE OR REPLACE
FUNCTION TIMEIDIN(TIMEID NUMBER)
RETURN VARCHAR2
IS
STRTIMEID VARCHAR2(48);
BEGIN
FOR I IN 0..13 LOOP
IF I<>12
THEN STRTIMEID:=TIMEID*12+1||',';
RETURN STRTIMEID;
ELSE STRTIMEID:=TIMEID*12+1;
RETURN STRTIMEID;
END IF;
END LOOP;
END TIMEIDIN;


通过这个函数我想传入一个数字类型的值得到一个字符串
如传进去一个 1 返回 1,2,3,4,5,6,7,8,9,10,11,12

但是我写的这个函数没有返回值 请问写的有问题吗 才学ORACLE的 有很多不了解 请教

------解决方案--------------------
CREATE OR REPLACE FUNCTION TIMEIDIN(TIMEID NUMBER) RETURN VARCHAR2 IS
STRTIMEID VARCHAR2(48);
BEGIN
FOR I IN 1.. 13 LOOP
IF I <> 12 THEN
 
STRTIMEID := STRTIMEID || i||',';

ELSE
STRTIMEID := STRTIMEID || i;
RETURN STRTIMEID;
END IF;
END LOOP;
RETURN STRTIMEID;
END TIMEIDIN;





------解决方案--------------------
SQL code

CREATE OR REPLACE FUNCTION TIMEIDIN(TIMEID NUMBER) RETURN VARCHAR2 IS
  STRTIMEID VARCHAR2(48);
  num number;
BEGIN
  FOR I IN  1.. 13 LOOP
    IF I <> 12 THEN
     num:=(TIMEID-1)*12+i;
      STRTIMEID := STRTIMEID ||num ||',';
   

    ELSE
     num:=(TIMEID-1)*12+i;
     STRTIMEID := STRTIMEID || num;
    

      RETURN STRTIMEID;
    END IF;
  END LOOP;
    RETURN STRTIMEID;
END TIMEIDIN;