我创建了一个表“Meta_Data_Table_Names”,在其中在 MetaTableName 列中插入了 48 个表名。还有另一列提供行数和相应的表名。
我想从“Meta_Data_Table_Names”中获取表名,并通过 Loop 顺序执行 SELECT Query 以进行验证。每当我从 TOAD 执行时,它都会抛出一个错误:表或视图不存在。
我们是否需要为“Meta_name”制作一个可以扫描的占位符?或者在查询期间读取值的任何特定语法?
DECLARE
CURSOR c1 IS SELECT MetaTableName FROM Meta_Data_Table_Names;
CURSOR c2 IS SELECT ROW_COUNT FROM Meta_Data_Table_Names;
Meta_name Meta_Data_Table_Names.MetaTableName%TYPE;
Count_num Meta_Data_Table_Names.ROW_COUNT%TYPE;
BEGIN
OPEN c1;
OPEN c2;
FOR i IN 1..48 LOOP
FETCH c1 INTO Meta_name;
FETCH c2 INTO Count_num;
IF (Count_num > 2000)
THEN
SELECT * FROM Meta_Name X
MINUS
SELECT * from ASFNCWK07.Meta_Name@NCDV.US.ORACLE.COM Y
UNION ALL
SELECT * FROM ASFNCWK07.Meta_Name@NCDV.US.ORACLE.COM Y
MINUS
SELECT * FROM Meta_Name X;
ELSE
DBMS_OUTPUT.PUT_LINE ('No Validation is required');
END IF;
END LOOP;
END;