要求
循环读取RESULT_TABLE中的tablename,tablecount值与 a b c作比较、
判断test.tablename与 对应表中数据是否相等,不相等EXCEPTION异常提示该表实际记录条数与记录不符,程序终止退出
代码
declare
--声明一个变量——存放数字
n varchar2(238);
nn varchar2(238);
a varchar(4000);
aa varchar(4000);
b number;
bb number;
--声明一个记录类型
type test_record is record(
v_tname test.tablename%type,
v_tcount test.tablecount%type
);
--声明一个记录类型变量
v_test_record test_record;
--定义游标
cursor test_tname_cursor is select tablename,tablecount from test;
--游标取到的第一行的数据
rtype test_tname_cursor%rowtype;
begin
--对游标进行for循环
for rtype in test_tname_cursor loop
--测试是否取到数据
dbms_output.put_line(' tablname : ' || rtype.tablename|| ' tablecount : '||rtype.tablecount);
end loop;
--查看原表数据,没有数据则报错提示
nn := 'select count(1) from test ';
execute immediate nn into bb;
dbms_output.put_line(bb);
if bb = 0 then
raise_application_error('lserror2','测试无数据');
end if;
for rtype in test_tname_cursor loop
--a := rtype.tablename;
--b := i.tablecount;
n := 'select count(1) from '||rtype.tablename;
--测试是否取到数据
--dbms_output.put_line('a : '||a);
--dbms_output.put_line(b);
dbms_output.put_line(n);
--execute immediate n;
execute immediate n into b;
dbms_output.put_line(b|| ' '||rtype.tablecount);
if b != rtype.tablecount then
raise_application_error('lserror1','参数不相等');
end if;
end loop;
EXCEPTION
when others then
dbms_output.put_line('数据不一致');
end;
关于test -----a-----b-----三张表