--查询所有记录数大于1的表
declare
cursor c_cur is
select a.TABLE_NAME from user_tables a; --这是游标
c_count number;
str varchar2(2000); --存动态SQL
begin
--循环变量表,判断每张表的记录数
for b_cur in c_cur loop
--特么的需要注意这边的 into 需要在外面 之前还有个using 动态
execute immediate 'select count(1) /*into c_count*/ from ' ||
b_cur.table_name
into c_count;
--此处注意 你取得数是调用的变量 B_CUR(c_CUR会报错)
if c_count > 0 then
dbms_output.put_line(b_cur.table_name || ' 表中有 ' || c_count ||
' 条数据。');
else
dbms_output.put_line(b_cur.table_name || ' 表中无数据。');
end if;
end loop;
end;
此例时两个问题
1、for b_cur in c_cur loop 后面取值需要 b_cur.table_name;
2、动态SQL into 需要 into 在外面
execute immediate 'select count(1) /*into c_count*/ from ' || b_cur.table_name into c_count;