Страницы

Поиск по вопросам

среда, 19 декабря 2018 г.

SELECT в хранимых функциях

Есть обычная функция:
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; /

Комментариев нет:

Отправить комментарий