sql >> データベース >  >> RDS >> Oracle

PLSQLの各テーブルに対して実行

    declare 
      cnt number;
    begin
      for r in (select owner, table_name from all_tables
                 where upper(table_name) like ('%MSRS%')) loop
    
        execute immediate 'select count(*) from "'
                || r.owner || '"."'
                || r.table_name || '"'
                into cnt;
    
        dbms_output.put_line(r.owner || '.' || r.table_name || ': ' || cnt);
      end loop;
    end;
    /
    

    all_tablesから選択する場合 テーブル名から選択するために必要な助成金が与えられたことを期待することはできません。したがって、ORA-00942: table or view does not existを確認する必要があります。 エラーがスローされました。

    エラーの原因について:selectステートメントが複数の行(テーブルごとに1つ)を含む結果セットを返し、そのような結果セットをvarchar2に割り当てることができないため、このエラーが発生します。

    ちなみに、SET SERVEROUT ONでdbms_outputを有効にしてください。 このブロックを実行する前に。




    1. OPENROWSETクエリでの変数の使用

    2. カンマ演算子によるMySQL文字列の区切り

    3. 続編:少なくとも1人の子供を持つ親

    4. 特定の日付のsql/PHPを使用して、2つの異なる行/列の2つの数値の平均、分散、および標準偏差を計算します