выполнить немедленный pl / sql, выполнив немедленный - PullRequest
0 голосов
/ 29 января 2019

У меня есть строка запроса, которая выполняется немедленно.

как я могу выполнить немедленно этот PL / SQL?

строка запроса = 'Выполнить немедленный выбор .... ';

Хотите сделать это: Execute immediate 'query string';

Вот так: Execute immediate 'Execute immediate select ....;';

Знаете ли вы, как я могу это сделать?

1 Ответ

0 голосов
/ 29 января 2019

Не комментируя, нормально это или мудро: да, я верю, что вы можете сделать это.То есть, я никогда не видел ничего написанного о EXECUTE IMMEDIATE, которое бы указывало на то, что оно не повторное.Плюс, это работает, если вы попробуете это.

Вот простой, типичный EXECUTE IMMEDIATE вызов:

DECLARE
  l_count NUMBER;
BEGIN
  EXECUTE IMMEDIATE 'SELECT COUNT(*) INTO :l_count FROM DBA_OBJECTS WHERE ROWNUM <= 100' INTO l_count;
  DBMS_OUTPUT.PUT_LINE ('l_count = ' || l_count);
END;

Здесь в основном то же самое, но с EXECUTE IMMEDIATE вызовами, вложенными вдва уровня:

DECLARE
  l_outer_count NUMBER;
BEGIN
EXECUTE IMMEDIATE q'!
BEGIN
  EXECUTE IMMEDIATE 'SELECT COUNT(*) INTO :x FROM DBA_OBJECTS WHERE ROWNUM <= 100' INTO :l_outer_count;
END;
!'
USING IN OUT l_outer_count;
DBMS_OUTPUT.PUT_LINE('l_outer_count = ' || l_outer_count);
END;

Я никогда не сталкивался с необходимостью сделать это.

...