ash*_*ini 6 oracle plsql plsqldeveloper
如何从 all_views 获取各个视图的总记录数。请找到以下代码以供参考..
Declare
view_name VARCHAR2(200);
v_str VARCHAR2 (1000);
v_output VARCHAR2(4000);
CURSOR tbl IS
SELECT view_name
FROM all_views
WHERE OWNER = SYS_CONTEXT( 'USERENV', 'CURRENT_SCHEMA')
ORDER BY 1 ;
BEGIN
OPEN tbl ;
LOOP
FETCH tbl INTO view_name;
EXIT WHEN tbl%NOTFOUND;
v_str := 'Select '''|| view_name ||' '' || count (*) from ' || view_name ;
EXECUTE IMMEDIATE v_str INTO v_output;
DBMS_OUTPUT.PUT_LINE(v_output);
END LOOP;
CLOSE tbl;
END;
Run Code Online (Sandbox Code Playgroud)
电流输出:
V_DSP_BUSINESS_DATE 10
V_DSP_DEPARTMENT 20
V_DSP_EMPLOYEE_DEACTIVATED 50
V_DSP_EMPLOYEE_GED 80
Run Code Online (Sandbox Code Playgroud)
预期输出:
sum up the record count of all individual views
i.e 160
Run Code Online (Sandbox Code Playgroud)
请帮忙。
只需修改LOOP每次获取 时的 sum sum即可COUNT。
LOOP
FETCH tbl INTO view_name;
EXIT WHEN tbl%NOTFOUND;
v_str := 'Select count (*) from ' || view_name ;
EXECUTE IMMEDIATE v_str INTO v_cnt;
v_cnt_tot := v_cnt_tot + v_cnt;
END LOOP;
DBMS_OUTPUT.PUT_LINE(v_cnt_tot);
Run Code Online (Sandbox Code Playgroud)
确保声明v_cnt和v_cnt_tot变量。
如果您确实想在LOOPie中执行此操作row-by-row,请使用简单的CURSOR FOR LOOP而不是声明CURSOR.
就像是,
FOR i IN SELECT view_name
FROM all_views
WHERE OWNER = SYS_CONTEXT( 'USERENV', 'CURRENT_SCHEMA')
LOOP
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3154 次 |
| 最近记录: |