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的 有很多不了解 请教

解决方案 »

  1.   

    刚才改了下 有返回值了 我传一个1进去的时候 返回就就是一个 13, 但是我想要的是 1,2,3,4,5,6,7,8,9,10,11,12
    这是什么情况啊
    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||',';
    ELSE STRTIMEID:=TIMEID*12+1;
    END IF;
    RETURN STRTIMEID;
    END LOOP;
    END TIMEIDIN;
      

  2.   

    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;
      

  3.   

    code=SQL]
    CREATE OR REPLACE FUNCTION TIMEIDIN(TIMEID NUMBER) RETURN VARCHAR2 IS
      STRTIMEID VARCHAR2(48);
    BEGIN
      FOR I IN  TIMEID.. 13 LOOP
        IF I <> 12 THEN
       
          STRTIMEID := STRTIMEID || i||',';
           ELSE
         STRTIMEID := STRTIMEID || i;
              RETURN STRTIMEID;
        END IF;
      END LOOP;
        RETURN STRTIMEID;
    END TIMEIDIN;
    我感觉你应该是这个意思 输入1的时候是1,2,3,4,5,6....
                        输入2的时候是2,3,4,5,6.....[
    [/code]
      

  4.   

    lz不必纠结,我来帮你
    CREATE OR REPLACE FUNCTION timeidin (timeid NUMBER)
       RETURN VARCHAR2
    IS
       strtimeid   VARCHAR2 (48);
    BEGIN
       FOR i IN timeid .. 12
       LOOP
          strtimeid := strtimeid || ',' || i;
       END LOOP;   RETURN SUBSTR (strtimeid, 2);
    END ;
      

  5.   


    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;
     看看如何
      

  6.   

    这样的话,就要这样了
    CREATE OR REPLACE FUNCTION timeidin (timeid NUMBER)
       RETURN VARCHAR2
    IS
       strtimeid   VARCHAR2 (48);
    BEGIN
       FOR i IN 1 .. 12
       LOOP
          strtimeid := strtimeid || ',' ||  ((timeid-1)*12+i);
       END LOOP;   RETURN SUBSTR (strtimeid, 2);
    END ;