0

すべてのユーザーテーブルの行数をカウントしたいのですが、動的SQLを使用すると、そのようなエラーが発生します。ORA-00903: 無効なテーブル名 ORA-06512: 行 19 SQL2.sql 20 2

DECLARE 
      TYPE cursor_type IS REF CURSOR;
      curs1 cursor_type;
      ammount NUMBER;
      stmnt1 VARCHAR2(200);
      stmnt2 VARCHAR2(200);
      T_NAME VARCHAR2(100);
    BEGIN 
      stmnt1 := 'SELECT TABLE_NAME FROM USER_TABLES';
      stmnt2 := 'SELECT COUNT(*) FROM :1';
      IF curs1%ISOPEN THEN
        CLOSE curs1;
      END IF;
      OPEN curs1 FOR stmnt1;

      LOOP
        FETCH curs1 INTO T_NAME;
        EXIT WHEN curs1%NOTFOUND; 
        EXECUTE IMMEDIATE stmnt2 INTO ammount USING T_NAME;
        DBMS_OUTPUT.PUT_LINE('Table ' || T_NAME || ' - ' || ammount || ' rows');
      END LOOP;
      CLOSE curs1;
    END;
4

1 に答える 1