Привет, у меня есть эта функция:
CREATE or replace FUNCTION Tablereturn (SWITCHER INTEGER)
RETURNS TABLE (Test CHAR(9),
tester INTEGER
)
LANGUAGE SQL
CONTAINS SQL
DETERMINISTIC
NO EXTERNAL ACTION
BEGIN
DECLARE SELECT1, SELECT2 VARCHAR(1024);
set select1 ='SELECT TEST, TESTER FROM TESTTAB';
set select2 ='SELECT DUMMY, JAR, BRAND FROM TESTTAB';
IF (SWITCHER = '1') THEN return select1;
ELSEIF (SWITCHER = '2') THEN return select2;
END IF;
RETURN TABLE;
END@
Вызов будет
select TEST from TABLE(Tablereturn(1))@
или
select JAR from TABLE(Tablereturn(2))@
Проблема в том, что она не работает,Компилятор говорит, что после возврата есть неожиданный токен "SELECT1".Я хочу иметь возможность вызывать его в виде таблицы и выбирать значения по мере необходимости в вызове.Я не могу просто вызвать его как процедуру с select как return, так как мне нужно работать с select как таблицей и изменять возвращаемый результат в большем select.Могу ли я иметь EXECUTE IMMEDIATE в функции?
Есть идеи?Другой вопрос, как я могу заставить функцию возвращать разные таблицы?Select2 возвращает 3 значения, а select1 возвращает только 2.
Спасибо за помощь.