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

Tabulka vytvořená v proceduře je zrušena, dochází k chybě kompilace pro proceduru

Kód, který potřebuje zkontrolovat, zda tabulka existuje, označuje špatnou softwarovou architekturu. Nemělo by být potřeba vytvářet tabulky za chodu. Je to anti-vzor (alespoň v Oracle). Variace na tento problém však vidíme dostatečně často, takže je zřejmé, že tomuto anti-vzoru se ve volné přírodě daří.

Pokud skutečně potřebujete implementovat takové řešení (z jakéhokoli důvodu), správným přístupem je oddělit kód sestavování tabulky od tabulky pomocí kódu. Mějte pro ně samostatné balíčky.

begin
    pkg_ddl.build_table_xyz;
    pkg_calc.run_xyz_job;
end;

Pokud tabulka XYZ neexistuje pkg_calc.run_xyz_job() je neplatný. Jeho neplatnost však nezabrání pkg_ddl.build_table_xyz() od provedení. Poté, když vnější program zavolá pkg_calc.run_xyz_job() zkompiluje proceduru.




  1. Jak mohu urychlit dotaz MySQL s velkým posunem v klauzuli LIMIT?

  2. PostgreSQL:Šifrujte sloupec pomocí pgcrypto

  3. Top 7 pracovních míst, které vyžadují SQL

  4. Extrahujte MySQL pole řádku do PHP proměnných a pole