DECLARE
v_tname all_tables.table_name%TYPE; -- 定义变量
v_row all_tables.num_rows%TYPE;
v_sql VARCHAR2(1000);
cursor tname is select table_name from all_tables where table_name like 'CP_%';
v_lname VARCHAR2(200);
v_datatype VARCHAR2(200);
v_lvalue VARCHAR2(1000);
BEGIN
open tname;
loop
fetch tname into v_tname;
exit when tname%notfound;
v_sql := 'SELECT COUNT(*) FROM ' || v_tname;
EXECUTE IMMEDIATE v_sql INTO v_row;
DBMS_OUTPUT.PUT_LINE('表名: ' || v_tname || ' 行数: ' || TO_CHAR(v_row));
DECLARE
cursor lname is SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME = v_tname;
BEGIN
open lname;
loop
fetch lname into v_lname;
exit when lname%notfound;
if v_row > 0 then
v_sql := 'SELECT DATA_TYPE FROM all_tab_columns WHERE table_name = ''' || v_tname ||''' AND column_name = '''|| v_lname ||'''';
-- DBMS_OUTPUT.PUT_LINE(v_sql);
EXECUTE IMMEDIATE v_sql INTO v_datatype;
if v_datatype != 'CLOB' then
v_sql := 'SELECT SUBSTR(TO_CHAR(' || v_lname || '),1,150) FROM ' || v_tname || ' where ROWNUM = 1';
EXECUTE IMMEDIATE v_sql INTO v_lvalue;
else
v_lvalue := 'CLOB';
end if;
else
v_lvalue := '';
end if;
DBMS_OUTPUT.PUT_LINE('列名: ' || v_lname || ' 列值: ' || TO_CHAR(v_lvalue));
end loop;
close lname;
END;
end loop;
close tname;
END;
用于查询GP_开头的所有表的表名,行数,和各个表的列名,每列是什么数据,用于了解数据库情况。