Есть обычная функция:
CREATE OR REPLACE FUNCTION ISFUNC(ID IN NUMBER) RETURN VARCHAR2
IS
BEGIN
IF (ID = 2 OR ID = 5) THEN
RETURN('TRUE');
ELSE
RETURN('FALSE');
END IF;
END ISFUNC;
/
Суть ее вроде бы понятна. Как в нее можно вставить SELECT? Т.е. чтобы в IF были не конкретные числа, а результат селекта?
Пусть, например, есть такой SELECT:
SELECT id
FROM Table
Результатом этого селекта являются две строки: 2 и 5.
Как правильно вставить этот SELECT в функцию? Пытался в сам IF, но понял, что не правильно.
Ответ
Попробуйте так:
CREATE OR REPLACE FUNCTION ISFUNC(ID IN NUMBER) RETURN VARCHAR2
IS
l_exst number;
BEGIN
SELECT count(*)
INTO l_exst
FROM Table t
WHERE t.id = ID;
IF (l_exst <> 0) THEN
RETURN('TRUE');
ELSE
RETURN('FALSE');
END IF;
END ISFUNC;
/
или
CREATE OR REPLACE FUNCTION ISFUNC(ID IN NUMBER) RETURN VARCHAR2
IS
BEGIN
FOR x IN ( SELECT ID FROM Table )
LOOP
IF (ID = x.ID) THEN
RETURN('TRUE');
END IF;
END LOOP;
RETURN('FALSE');
END ISFUNC;
/
Комментариев нет:
Отправить комментарий