Ошибка недопустимого имени таблицы при использовании оператора Execute Immediate с переменными привязки

Я пытаюсь запустить этот динамический SQL (используя EXECUTE IMMEDIATE )

M_SQL_STATEMENT := 'SELECT MAX(:m_var1)+1 from :m_var2 RETURNING MAX(:m_var1)+1 INTO :m_var3';

EXECUTE IMMEDIATE M_SQL_STATEMENT
   USING M_COLUMN_NAME, UPPER(P_TABLE_NAME), M_COLUMN_NAME
   RETURNING INTO M_SEQ_NUMBER;

Однако, пытаясь запустить это, я продолжаю сталкиваться с

ORA-00903: Invalid table

P_TABLE_NAME - имя таблицы который принимается как ввод. Я подтвердил, что имя таблицы и имя столбца действительны. Я не могу понять, почему Oracle выдает ошибку.

FWIW Изменение оператора SQL на

M_SQL_STATEMENT := 'SELECT MAX(:m_var1)+1 SEQ from :m_var2 RETURNING SEQ INTO :m_var3';

по-прежнему приводит к той же ошибке.

5
задан skaffman 11 March 2011 в 14:56
поделиться