Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle Sql:Процедура, която може да създава временни таблици вътре в нея

Защо изобщо искате да създадете временна таблица в съхранена процедура?

Сравнително често се създават временни таблици в други бази данни (SQL Server и MySQL, например). Много, много рядко се прави същото в Oracle. В почти всеки случай, когато се изкушавате да създадете временна таблица в Oracle, има по-добър архитектурен подход. Има нишка в стека на DBA, която обсъжда алтернативи на временните таблици и защо те не са често необходими в Oracle.

Програмно можете да създавате обекти с помощта на динамичен SQL

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

Ако обаче създадете временна таблица динамично, всяка препратка към тази таблица също ще трябва да бъде чрез динамичен SQL-- няма да можете да напишете прост SELECT твърдения срещу масата. А дефиницията на временна таблица в Oracle е глобална, така че е видима за всяка сесия. Ако имате две различни сесии, които се опитват да създадат една и съща таблица, втората сесия ще получи грешка. Ако очаквате таблицата да има различна дефиниция в различните сесии, ще имате още повече проблеми.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проблеми при превключване на .NET проект от неуправляеми към управлявани ODP.NET сборки

  2. Обединете две таблици и намерете припокриващи се дати и пропуски

  3. Как да премахна дубликати от списък, разделен със запетая, чрез регулярен израз в Oracle, но не искам дублирани стойности?

  4. Как да проверя дали всички полета са уникални в Oracle?

  5. Методи за събиране:FIRST &LAST функции в Oracle Database