如何用动态SQL实现输入表名能得到表的行数??

解决方案 »

  1.   

    T@orcl>CREATE OR REPLACE PROCEDURE P(P_TABNAME VARCHAR2)
      2  AS
      3  L_SQL LONG;
      4  L_CNT NUMBER;
      5  BEGIN
      6  L_SQL := 'SELECT COUNT(*) FROM '||P_TABNAME;
      7  EXECUTE IMMEDIATE L_SQL INTO L_CNT;
      8  DBMS_OUTPUT.put_line(L_CNT);
      9  END;
     10  /Procedure created.Elapsed: 00:00:00.85
    T@orcl>EXEC P('T');
    1230966PL/SQL procedure successfully completed.Elapsed: 00:00:12.42
    T@orcl>EXEC P('DUAL');
    1PL/SQL procedure successfully completed.Elapsed: 00:00:00.01
      

  2.   

    思路:存储过程参数为表名 里面select count(1) from || @tabname进行计算 DBMS_OUTPUT输出结果