Выполнить Pl SQL условия в столбце и получить возвращаемое значение - PullRequest
0 голосов
/ 18 мая 2019

Используемые таблицы:

ПРАВИЛА ДВИГАТЕЛЯ Таблица:

enter image description here

ТОЧКА Таблица

enter image description here

Я пытаюсь выполнить правила в таблице RULE ENGINE, где некоторые данные (d1.sm.n1, d2.sm.n2..etc) ссылаются из таблицы POINT.

Значение 'XSGSY' зависит от правила в столбце RULE.

Примечание. Эти правила следуют синтаксису plsql.

Я пыталсяизвлечь значения данных (d1.sm.n1) и добавить к правилу:

EXECUTE IMMEDIATE 'BEGIN If ''Yes'' = ''Yes'' OR 
''Yes'' = ''Yes'' then return ''Y''; else return ''N''; end if; END;'

, затем выполнить правила, используя EXECUTE IMMEDIATE, но это не сработало.

ОШИБКА:В процедуре оператор RETURN не может содержать выражение

Также пробовал с функцией и получил ошибку:

EXECUTE IMMEDIATE 'create or replace function express return 
VARCHAR2(10)  
  BEGIN If ''Yes'' = ''Yes'' OR ''Yes'' = ''Yes'' 
 then return ''Y''; else return ''N''; end if; 
END express;' INTO l_output;

ОШИБКА: ORA-06546: оператор DDL выполняется внезаконный контекст

1 Ответ

3 голосов
/ 18 мая 2019

Ваш дизайн выглядит некорректно. Я предполагаю, что вы хотите извлечь результат динамически сконструированного блока PL / SQL в локальную переменную.Если это так, вы можете использовать опцию USING OUT variable.

SET SERVEROUTPUT ON
DECLARE
l_x  VARCHAR2(10);
BEGIN
EXECUTE IMMEDIATE 'BEGIN If ''Yes'' = ''Yes'' OR 
''Yes'' = ''Yes'' then :x := ''Y''; else :x := ''N''; end if; END;' USING OUT l_x;
dbms_output.put_line(l_x);
END;
/

Y


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