sql >> Databasteknik >  >> RDS >> Oracle

Tabell skapad i en procedur släpps, Får kompileringsfel för procedur

Kod som behöver kontrollera om en tabell finns indikerar dålig mjukvaruarkitektur. Det borde inte finnas något behov av att skapa tabeller i farten. Det är ett antimönster (åtminstone i Oracle). Men vi ser variationer på detta problem tillräckligt ofta, så det är uppenbart att detta antimönster frodas i naturen.

Om du verkligen behöver implementera en sådan lösning (av någon anledning) är det korrekta tillvägagångssättet att separera tabellbyggnadskoden från tabellen med hjälp av kod. Ha separata paket för dem.

begin
    pkg_ddl.build_table_xyz;
    pkg_calc.run_xyz_job;
end;

Om tabellen XYZ inte finns pkg_calc.run_xyz_job() är ogiltig. Men dess ogiltighet hindrar inte pkg_ddl.build_table_xyz() från att utföra. Sedan, när det yttre programmet anropar pkg_calc.run_xyz_job() det kommer att kompilera proceduren.




  1. anropar mysql storedprocedure från c#?

  2. Giltig GROUP BY-fråga fungerar inte när den kombineras med INSERT INTO på Oracle

  3. Filtrera rader i en kolumn baserat på uppställda regler i SQL

  4. Servering av läcker mat (och data) – En datamodell för restauranger