大概您当前的查询正在获取
ORA-00904: "CALLE": invalididentifier,因为子查询没有名为的列
CALLE。不幸的是,您不能在运行时那样为查询提供表名,而必须诉诸于动态SQL。
这样的事情将遍历所有表,并且对于每个表都会
CALLE从每个表中获取所有值,然后您就可以遍历这些表。我曾经
DBMS_OUTPUT显示过它们,假设您是在SQL* Plus或其他可以处理的事情中执行的;但您可能想对他们做其他事情。
set serveroutput ondeclare -- declare a local collection type we can use for bulk collect; use any table -- that has the column, or if there isn't a stable one use the actual data -- type, varchar2(30) or whatever is appropriate type t_values is table of table.calle%type; -- declare an instance of that type l_values t_values; -- declare a cursor to generate the dynamic SQL; where this is done is a -- matter of taste (can use 'open x for select ...', then fetch, etc.) -- If you run the query on its own you'll see the individual selects from -- all the tables cursor c1 is select table_name, 'select calle from ' || owner ||'.'|| table_name as query from all_tables where owner = 'FMJ' and table_name like 'BACKUP_SEMAFORO_GEO%' order by table_name;begin -- loop around all the dynamic queries from the cursor for r1 in c1 loop -- for each one, execute it as dynamic SQL, with a bulk collect into -- the collection type created above execute immediate r1.query bulk collect into l_values; -- loop around all the elements in the collection, and print each one for i in 1..l_values.count loop dbms_output.put_line(r1.table_name ||': ' || l_values(i)); end loop; end loop;end;/



