我搜索了这个错误,但是由于它非常模糊,我找不到类似的东西来理解问题在哪里。此代码实际上是针对Oracle Apex应用程序的。我实际上有绑定变量而不是数字1和84(我确认它们在我的表中是正确的值),但仍然有相同的错误。
在声明变量之后,它选择一个字符串作为另一个表中一列的名称,并将其放入V_列。
然后我动态地构建一个查询来获取这个列的值,并将其放入v_值中,最后返回一个值(然后在表单文本字段中显示)。不幸的是,它返回ORA00905。
当我尝试使用已知值单独运行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;