sql >> Database >  >> RDS >> Oracle

Tabel die in een procedure is gemaakt, is verwijderd, compilatiefout voor procedure ontvangen

Code die moet controleren of een tabel bestaat, duidt op een slechte software-architectuur. Het zou niet nodig moeten zijn om on-the-fly tabellen te maken. Het is een anti-patroon (althans in Oracle). We zien echter vaak genoeg variaties op dit probleem, dus het is duidelijk dat dit anti-patroon in het wild gedijt.

Als u een dergelijke oplossing echt moet implementeren (om welke reden dan ook), is de juiste aanpak om de code voor het bouwen van tabellen van de tabel te scheiden met behulp van code. Heb aparte pakketten voor hen.

begin
    pkg_ddl.build_table_xyz;
    pkg_calc.run_xyz_job;
end;

Als tabel XYZ niet bestaat pkg_calc.run_xyz_job() is ongeldig. De ongeldigheid verhindert echter niet dat pkg_ddl.build_table_xyz() van het uitvoeren. Dan, wanneer het buitenste programma pkg_calc.run_xyz_job() . aanroept het zal de procedure compileren.




  1. Rijen splitsen in kolommen in orakel

  2. Ondersteunt Microsoft OLE DB Provider voor SQL Server TLS 1.2?

  3. waarom een ​​associatieve array geïndexeerd door VARCHAR2 niet meer dan 9 elementen opslaat?

  4. Reset AutoIncrement in SQL Server na verwijderen