sql >> Databáze >  >> RDS >> Oracle

Oracle:Dynamický SQL

Zde je jednoduchý příklad, který se dívá na tabulky ve vašem vlastním schématu:

set serveroutput on
declare
    c number;
begin
    for r in (select table_name from user_tables) loop
        execute immediate 'select count(*) from ' || r.table_name
            into c;
        dbms_output.put_line(r.table_name ||': '|| c);
    end loop;
end;
/

Chcete-li se podívat na tabulky někoho jiného, ​​budete muset použít dba_tables jak jste začali zkoušet, nebo spíše all_tables protože by to mělo vyloučit tabulky, ze kterých nemůžete počítat, ale budete také muset určit vlastníka v count prohlášení.

Normálně byste chtěli použít proměnné vazby, abyste se vyhnuli vkládání SQL, ale musíte zadat názvy objektů se zřetězením, jako je toto.

Něco jiného, ​​na co si dát pozor, je chyba, kterou jste měli ve svém dotazu, ale kterou Egor nyní z otázky odstranil. Dynamický řetězec SQL, který spustíte, by neměl být ukončen středníkem (; ).




  1. Načítání výsledku jednoho řádku bez opakování ve smyčce z Mysql pomocí Java

  2. Je MySQL index_length v bajtech?

  3. MySQL Jak VYBRAT data z tabulky, která dnes zaznamenala?

  4. Je nutné na konci skriptu uzavřít připojení Psycopg2?