ORA-06503: PL / SQL: функция возвращена без значения, строка 21 ORA-06512: в строке 5 - PullRequest
0 голосов
/ 29 сентября 2018
    create or replace FUNCTION NOTGIVEN RETURN VARCHAR2 AS
    IAD VARCHAR2(20);
    IND VARCHAR2(20);
    CURSOR C1 IS SELECT Q_ID  FROM QUESTION  WHERE NOT Q_ID in (SELECT Q.Q_ID FROM QUESTION Q INNER JOIN ANSWER A ON Q.Q_ID = A.Q_ID); 

    BEGIN
     OPEN C1;
      LOOP
      FETCH C1 INTO IND;
      EXIT WHEN C1%NOTFOUND;

      IF C1%FOUND THEN --if found then
      SELECT Q_ID INTO IAD FROM QUESTION WHERE Q_ID = IND;
      DBMS_OUTPUT.PUT_LINE(IAD);
      END IF;
     IF C1%NOTFOUND THEN
      DBMS_OUTPUT.PUT_LINE('no found');--if not found
      END IF;
     END LOOP;
     CLOSE C1;
      END NOTGIVEN;

Я пытался создать функцию, которая дает все вопросы, ответ на которые отсутствует, он выдает соответствующий вывод, но показывает этот тип ошибки. ORA-06503: PL / SQL: функция возвращена без значения, строка 21 ORA-06512: в строке в 5 я также попробовал исключение, но оно не работает.

1 Ответ

0 голосов
/ 29 сентября 2018

Вы написали функцию, которая должна возвращать значение VARCHAR2, но в коде нет операторов возврата, поэтому процедура не возвращает значение.

CREATE OR REPLACE FUNCTION NOTGIVEN
  RETURN VARCHAR2
AS
  IAD VARCHAR2(20);
  IND VARCHAR2(20);

  CURSOR C1 IS SELECT Q_ID
                 FROM QUESTION
                 WHERE NOT Q_ID IN (SELECT Q.Q_ID
                                      FROM QUESTION Q
                                      INNER JOIN ANSWER A
                                        ON Q.Q_ID = A.Q_ID); 
BEGIN
  OPEN C1;

  LOOP
    FETCH C1 INTO IND;
    EXIT WHEN C1%NOTFOUND;

    IF C1%FOUND THEN --if found then
      SELECT Q_ID
        INTO IAD
        FROM QUESTION
        WHERE Q_ID = IND;

      DBMS_OUTPUT.PUT_LINE(IAD);
    END IF;

    IF C1%NOTFOUND THEN
      DBMS_OUTPUT.PUT_LINE('no found');--if not found
    END IF;
  END LOOP;

  CLOSE C1;

  RETURN IAD;  -- added
END NOTGIVEN;

Здесь я добавил оператор для возврата IAD как раз перед END NOTGIVEN.

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...