DECLARE
v_owner varchar2(40);
v_table_name varchar2(40);
cursor get_tables is
select distinct table_name
, user
from user_tables
where lower(user) = 'schema_name'
;
BEGIN
OPEN get_tables;
LOOP
FETCH get_tables
INTO v_table_name
, v_owner
;
EXIT WHEN get_tables%NOTFOUND;
EXECUTE IMMEDIATE
'INSERT
INTO STATS_TABLE
( TABLE_NAME
, SCHEMA_NAME
, RECORD_COUNT
, CREATED
)
SELECT '''
|| v_table_name
|| ''' , ''' || v_owner
|| ''' , COUNT(*)
, TO_DATE(SYSDATE,''DD-MON-YY'')
FROM ' || v_table_name
;
END LOOP;
CLOSE get_tables;
END;
これを使用して、スキーマ内のすべてのテーブルの行数を取得しています。このクエリは、stackoverflow から取得しました。
これを正常にコンパイルされた手順として実行しましたが、結果を表示できません y そうですか?
私はpl / sqlを初めて使用しますが、背後にあるロジックを理解できない即時クエリを実行した後、selectステートメントが何をするのか誰でも説明できます。