Tabelle erstellen, wenn noch nicht vorhanden

derhenry

Fleissiger Benutzer
Beiträge
54
Hallo zusammen,
ein Excel-Makro erstellt aus einer SQ_Abfrage eine neue Tabelle. Klappt prima:
Code:
IF object_id ('meineTabelle', 'U') IS NOT NULL
  drop table 'meineTabelle';
SELECT ...  INTO ...  FROM ...;

Ich möchte das so ändern, dass die Tabelle nur angelegt wird, wenn sie nicht bereits vorhanden ist und mein Makro einen Rückgabewert erhält, ob neu erstellt oder bereits vorhanden. So funktioniert es schon mal nicht:
Code:
IF object_id ('meineTabelle', 'U') IS NOT NULL
   SELECT 'Tabelle war bereits vorhanden.'
   SELECT ...  INTO ...  FROM ...;
ELSE
SELECT 'Tabelle wurde neu erstellt.'

Wie muss der Code aussehen?
Danke und Grüße
derhenry
 
Werbung:
die normale Syntax dazu wäre:

Code:
akretschmer_test=*> create table if not exists foo as select * from generate_series(1,10) s(s);
SELECT 10
akretschmer_test=*> create table if not exists foo as select * from generate_series(1,10) s(s);
NOTICE:  relation "foo" already exists, skipping
CREATE TABLE AS
akretschmer_test=*>

Das zumindest in PostgreSQL, ist aber IMHO Standard.
 
Hallo,

vielen Dank für die Hilfe. Jedoch verstehe ich am Code (oder seiner Formatierung hier) überhaupt nichts.
Bei meinem
Code:
IF object_id ('meineTabelle', 'U') IS NOT NULL
  drop table 'meineTabelle';
würde ich auch gerne bleiben. Mit geht es hier um die Ergänzung, dass der folgende Code eben nur im True-Fall ausgeführt wird.
Könntest Du mir das an meinem Konstrukt zeigen?

Danke und Grüße
 
Ich kenne M$SQL nicht, in PostgreSQL geht es so:

Code:
akretschmer_test=*> drop table if exists foo;
DROP TABLE
akretschmer_test=*> drop table if exists foo;
NOTICE:  table "foo" does not exist, skipping
DROP TABLE
 
Werbung:
Du solltest bei IF ELSE immer mit BEGIN und END arbeiten, ansonsten ist das IF nach deinem ; zuende.
Code:
IF 1=1
BEGIN
SELECT 1
END
ELSE
BEGIN
SELECT 2
END
 
Zurück
Oben