set serveroutput on --打开sqlplus输出,如果是用plsqldev 这个忽略DECLARE V_CNT INT; BEGIN FOR REC IN (SELECT CODE FROM B) LOOP EXECUTE IMMEDIATE 'select count(1) from t_' || REC.CODE INTO V_CNT; DBMS_OUTPUT.PUT_LINE('表[t_' || REC.CODE || ']数据条数:' || V_CNT); END LOOP; END;
DECLARE V_CNT INT; V_SUM INT;--总条数。 BEGIN V_SUM :=0; FOR REC IN (SELECT CODE FROM B) LOOP EXECUTE IMMEDIATE 'select count(1) from t_' || REC.CODE INTO V_CNT; V_SUM := V_SUM + V_CNT; END LOOP; END;
DECLARE V_CNT INT; V_SUM INT;--总条数。 BEGIN V_SUM :=0; FOR REC IN (SELECT CODE FROM B) LOOP EXECUTE IMMEDIATE 'select count(1) from t_' || REC.CODE INTO V_CNT; V_SUM := V_SUM + V_CNT; END LOOP; dbms_output.put_line(to_char(V_SUM)); END;
V_CNT INT;
BEGIN
FOR REC IN (SELECT CODE FROM B) LOOP
EXECUTE IMMEDIATE 'select count(1) from t_' || REC.CODE
INTO V_CNT;
DBMS_OUTPUT.PUT_LINE('表[t_' || REC.CODE || ']数据条数:' || V_CNT);
END LOOP;
END;
如果在sqlplus中,可以spool输出。数量求和可以在存储过程中做嘛。
DECLARE
V_CNT INT;
V_SUM INT;--总条数。
BEGIN
V_SUM :=0;
FOR REC IN (SELECT CODE FROM B) LOOP
EXECUTE IMMEDIATE 'select count(1) from t_' || REC.CODE
INTO V_CNT;
V_SUM := V_SUM + V_CNT;
END LOOP;
END;
V_CNT INT;
V_SUM INT;--总条数。
BEGIN
V_SUM :=0;
FOR REC IN (SELECT CODE FROM B) LOOP
EXECUTE IMMEDIATE 'select count(1) from t_' || REC.CODE
INTO V_CNT;
V_SUM := V_SUM + V_CNT;
END LOOP;
dbms_output.put_line(to_char(V_SUM));
END;
请问这么写有什么问题吗?
为什么我执行后是这样的?回车后数字一直递增。
SQL> @test2.sql
14
15