Я искал эту ошибку, но так как она очень расплывчатая, я не смог найти что-то похожее, чтобы понять, в чем проблема.Этот код фактически предназначен для приложения Oracle Apex.На самом деле у меня есть переменные связывания вместо чисел 1 и 84 (которые я подтверждаю, это правильные значения в моих таблицах), но все равно получаю ту же ошибку.
После объявления переменных он выбирает строку, которая будет именемстолбец в другой таблице и поместите его в V_COLUMN.
Затем я динамически создаю запрос, чтобы получить значение этого столбца и помещаю его в V_VALUE, и, наконец, я возвращаю значение (которое затем отображается в текстовом поле формы),К сожалению, он возвращает ORA 00905.
Когда я пытался запускать команды sql отдельно, используя известные значения, он запускается.Поэтому я думаю, что где-то в динамическом sql должна быть какая-то проблема синтаксиса.Спасибо за любую помощь.
DECLARE
V_COLUMN VARCHAR2(50) := 'UNKNOWN';
V_VALUE VARCHAR2(50) := 0;
V_SQL VARCHAR2(500);
BEGIN
SELECT SUB_CAT_ABBREV INTO V_COLUMN FROM SUB_CATEGORY WHERE SUB_CATEGORY_ID = 1;
V_SQL := 'SELECT ' || V_COLUMN || ' INTO V_VALUE FROM PLANNED_EFFORTS WHERE PLAN_ID = 84';
EXECUTE IMMEDIATE V_SQL;
RETURN V_VALUE;
EXCEPTION
WHEN no_data_found THEN
RETURN 'No Data Found Error';
WHEN too_many_rows then
RETURN 'Too many rows';
WHEN OTHERS THEN
RETURN 'Other Error';
END;