Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 5
  • 236

Witajcie, chcąc przelać wynik zapytania do nowej tabeli, zawsze używałem w Microsoft SQL Server następującej składni:

 

SELECT *
INTO nowa_tabela
FROM nazwa_tabeli
[WHERE jakies_warunki]

 

Natomiast w PL/SQL zauważyłem że najczęściej używa się w tym celu czegoś takiego:

 

CREATE TABLE nowa_tabela AS
(
   SELECT * 
   FROM nazwa_tabeli 
   [WHERE jakies_warunki]
);

 

Wiem, że Oracle dopuszcza używanie SELECT INTO. W czym tkwi różnica?

 

Maciej_Krauze
  • Zapytał
  • @ Maciej_Krauze | 24.08.2015
    • lider
    • laureat
    • 45
    • 16
    • 58

Odpowiedź (1)

  • 5

Pytanie o tyle trudne, że pomieszałeś kilka pojęć.

Po pierwsze składnie:

SELECT * INTO nowa_tabela FROM tabela_źródłowa;


nie jest elementem standardu języka SQL w związku z czym nie jest obsługiwana przez serwer ORACLE (przynajmniej do wersji 11g włącznie).

Po drugie w języku PL/SQL, który jest prywatnym językiem programowania serwera ORACLE występuje składnia:

SELECT kolumna1, koumna2 INTO zmienna1, zmienna2 FROM tabela;


Ta składnia nie umożliwia tworzenia nowej tabeli i służy do przechwytywania wyników z zapytania do zmiennych lokalnych w podprogramie PL/SQL.

Po trzecie - metoda CTAS (CREATE TABLE AS SELECT...) dla odmiany jest elementem standardu ANSI SQL i działa na wszystkich platformach zgodnych z tym standardem.

  • Odpowiedział
  • @ | 29.08.2015
  • TRENER MODERATOR ALTKOM AKADEMII