Здравствуйте, я немного озадачен тем, что курсор, который у меня есть в этой функции, возвращает только верхнюю строку.Почему мой курсор возвращает только верхнюю строку?
Я сравнивал это с несколькими разными примерами, которые я видел, и я просто не понимаю, что случилось. Любые рекомендации приветствуются.
FUNCTION FS_A_FUNCTION
(
inDate DATE
)
RETURN VARCHAR2 IS
tAnswer VARCHAR2(1) := 'N';
tDates DATE;
CURSOR c1 IS
SELECT S.Dates FROM A_TABLE S;
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO tDates;
EXIT WHEN c1%NOTFOUND;
END LOOP;
CLOSE c1;
IF inDate IN (tDates) THEN
tAnswer := 'Y';
END IF;
RETURN (tAnswer);
END FS_A_FUNCTION
Заранее спасибо.
Это неправильное решение. Он будет бросать NO_DATA_FOUND, если 'inDate' не находит совпадение, а не возвращает желаемый' tAnswer = 'N''. – APC
@APC - даже с 'max'? Я попробую это позже. Однако уловка может быть более аккуратной (или более четкой). –
Нет, ты прав. Я пропустил значение MAX() – APC