Ich habe db A und db B. Am Anfang einer gespeicherten Prozedur möchte ich alle Zeilen von B.mytable
bis B.mytablebackup
sichern. Der Rest der gespeicherten Prozedur wird für Tabellen auf Datenbank A ausgeführt (die Daten sammelt und in B.mytable
schreibt).Wie überprüft man das Vorhandensein einer Tabelle von einer anderen SQL-Datenbank?
So überprüfe ich, ob B.mytablebackup
existiert
IF EXISTS(SELECT 1 FROM B.dbo.mytablebackup)
und wenn es tut, tut die gespeicherte Prozedur ein
INSERT INTO B..mytablebackup SELECT * FROM B..mytable
Wenn es nicht existiert ein
SELECT * INTO B..mytablebackup from B..mytable
Aber wenn ich die gespeicherte Prozedur ausführen, erhalte ich den Fehler
Es ist bereits ein Objekt mit dem Namen ‚mytablebackup‘ in der Datenbank
ich eine Print
Anweisung hinzugefügt und Ausführung nimmt der Zweig der IF „existiert nicht“.
Was mache ich falsch?
*** SQL *** ist nur die * strukturierte Abfragesprache * - eine Sprache, die von vielen Datenbanksystemen verwendet wird, aber kein Datenbankprodukt ... viele Dinge sind herstellerspezifisch - also müssen wir das wirklich tun wissen, was ** Datenbank-System ** (und welche Version) Sie verwenden (bitte aktualisieren Sie die Tags entsprechend) .... –
@marc_s Ich würde vermuten, dass es MSSQL basiert auf 'db.schema.tbl' Format – Kermit
' IF EXISTS (SELECT 1 FROM B.dbo.mytabackup) überprüft, ob es mindestens eine Zeile * innerhalb von * 'mytabackup' gibt. Es sagt Ihnen nicht, ob die Tabelle selbst * existiert * (wenn die Tabelle nicht existiert, wird es einen Kompilierungsfehler erzeugen) –