Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle Sql :Procedura, która może tworzyć w niej tymczasowe tabele

Dlaczego w pierwszej kolejności chcesz utworzyć tymczasową tabelę w procedurze składowanej?

Stosunkowo często tworzy się tabele tymczasowe w innych bazach danych (na przykład SQL Server i MySQL). Bardzo, bardzo rzadko robi się to samo w Oracle. W prawie każdym przypadku, gdy kusi Cię utworzenie tymczasowej tabeli w Oracle, istnieje lepsze podejście architektoniczne. Istnieje wątek na stosie DBA, który omawia alternatywy dla tabel tymczasowych i dlaczego nie są powszechnie potrzebne w Oracle.

Programowo możesz tworzyć obiekty za pomocą dynamicznego SQL

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

Jeśli jednak utworzysz tabelę tymczasową dynamicznie, każde odwołanie do tej tabeli również będzie musiało być wykonane przez dynamiczny SQL — nie będziesz w stanie napisać prostego SELECT oświadczenia przeciwko tabeli. A definicja tabeli tymczasowej w Oracle jest globalna, więc jest widoczna dla każdej sesji. Jeśli masz dwie różne sesje, które próbują utworzyć tę samą tabelę, w drugiej sesji wystąpi błąd. Jeśli spodziewasz się, że stół będzie miał inną definicję w różnych sesjach, masz jeszcze więcej problemów.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyodrębnij dane xml za pomocą zapytania Oracle

  2. przyznaj SELECT dostęp do v$session innym użytkownikom

  3. Używanie klauzuli IN z ciągiem oddzielonym przecinkami z wyniku funkcji replace() w Oracle SQL

  4. Wyrocznia:„=DOWOLNY()” kontra „IN ()”

  5. Niejednoznaczność w połączeniach lewych (tylko wyrocznia?)