sql >> Database teknologi >  >> RDS >> Oracle

Tabel oprettet i en procedure slettes, Får kompileringsfejl for procedure

Kode, der skal kontrollere, om en tabel eksisterer, indikerer dårlig softwarearkitektur. Der skulle ikke være behov for at oprette tabeller i farten. Det er et anti-mønster (i hvert fald i Oracle). Vi ser dog variationer på dette problem ofte nok, så det er tydeligt, at dette anti-mønster trives i naturen.

Hvis du virkelig har brug for at implementere en sådan løsning (uanset grund) er den korrekte tilgang at adskille tabelbygningskoden fra tabellen ved hjælp af kode. Har separate pakker til dem.

begin
    pkg_ddl.build_table_xyz;
    pkg_calc.run_xyz_job;
end;

Hvis tabel XYZ ikke eksisterer pkg_calc.run_xyz_job() er ugyldig. Dens ugyldighed forhindrer dog ikke pkg_ddl.build_table_xyz() fra at eksekvere. Så, når det ydre program kalder pkg_calc.run_xyz_job() det vil kompilere proceduren.




  1. Indstil kryds i MySQL:en ren måde

  2. Sådan får du rangposition fra @curRank

  3. SQL UNION FOR XML navn output kolonne

  4. Konfigurer Lucene.Net med SQL Server