Oracle游标-循环查询表中数据(表名),并执行

时间:2021-03-06 21:52:21

Oralce 表中存有一个字段,该字段存储表名,要把该表中的所有表名查询出来(即表名结果集),且执行结果集from 表名结果集:

declare
  v_ccount varchar2(100);
  --定义一个游标变量
  cursor c_job is
  --查询该表中的所有表名
    select tablename from tbname;
  c_row c_job%rowtype;
begin
  --循环待处理数据,即以上查出的结果集
  for c_row in c_job loop
    ---执行语句 from 循环的表名   并插入
    execute immediate 'select count(1)  from ' || c_row.tablename
      into v_ccount;
    insert into tb_count
      (tbname2, ccount)
    values
      (c_row.tablename, v_ccount);
    --dbms_output.put_line(v_ccount);
  end loop; --循环结束
  commit;
end;