我遇到了一个有趣的错误,我不确定如何解决它的最佳方法。给出以下块:
DECLARE
v_column_exists number := 0;
host_column_exists number := 0;
i number;
BEGIN
Select count(*) into v_column_exists from user_tab_cols where column_name = 'CONNECTIONDESCRIPTION' and table_name = 'NODES';
if (v_column_exists = 1) then
Select count(*) into host_column_exists from user_tab_cols where column_name = 'HOST' and table_name = 'NODES';
if (host_column_exists = 0) then
execute immediate 'alter table NODES add (Host varchar2(255))';
for item in (select connectiondescription, code from nodes) loop
... LOOP STUFF ...
end loop;
end if;
end if;
END;
我得到以下结果:
PL / SQL:ORA-00904:“CONNECTIONDESCRIPTION”:无效的标识符
ORA-06550:第40行,第20列:PL / SQL:忽略SQL语句
ORA-06550:第41行,第20列:PLS-00364:循环索引变量'ITEM' 使用无效
任何想法如何摆脱这个错误?当数据库中不存在列NODES.CONNECTIONDESCRIPTION
时出现问题,但是在这种情况下,循环不会在运行时执行。我需要禁用这些错误,但没有找到任何方法来做到这一点。我尝试过使用ALTER SESSION SET PLSQL_WARNINGS='DISABLE:00904'
,但没有效果。
由于
答案 0 :(得分:0)
正确的方法是使用另一个动态查询,该查询将项目批量收集到数组,然后循环遍历此数组。