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

Oracle Sql :Procedura, která v něm může vytvářet dočasné tabulky

Proč chcete vůbec vytvořit dočasnou tabulku v uložené proceduře?

Je poměrně běžné vytvářet dočasné tabulky v jiných databázích (například SQL Server a MySQL). V Oracle je velmi, velmi vzácné dělat totéž. Téměř v každém případě, kdy jste v pokušení vytvořit dočasnou tabulku v Oracle, existuje lepší architektonický přístup. Na zásobníku DBA je vlákno, které pojednává o alternativy k dočasným tabulkám a proč nejsou běžně potřeba v Oracle.

Programově můžete vytvářet objekty pomocí dynamického SQL

CREATE OR REPLACE PROCEDURE dont_do_this
AS
BEGIN
  EXECUTE IMMEDIATE 'CREATE GLOBAL TEMPORARY TABLE a( id INTEGER )';
END;

Pokud však dočasnou tabulku vytvoříte dynamicky, každý odkaz na tuto tabulku bude také muset být prostřednictvím dynamického SQL – nebudete moci napsat jednoduchý SELECT prohlášení proti tabulce. A definice dočasné tabulky v Oracle je globální, takže je viditelná pro každou relaci. Pokud máte dvě různé relace, které se obě pokoušejí vytvořit stejnou tabulku, druhá relace dostane chybu. Pokud očekáváte, že tabulka bude mít různé definice v různých relacích, máte ještě více problémů.



  1. Hromadné vkládání nebo aktualizace pro tabulky s poli příloh

  2. Typy kurzoru serveru SQL Server – pouze vpřed dynamický kurzor | Kurz SQL Server / Kurz TSQL

  3. Řízení zdroje a uložené procedury

  4. django.db.utils.OperationalError:(2026, 'Chyba připojení SSL:SSL_CTX_set_tmp_dh se nezdařilo')