Frage

Gibt es eine Möglichkeit, eine Datenbank aus einer Variablen zu wählen?

Declare @bob as varchar(50);
Set @bob = 'SweetDB';
GO
USE @bob
War es hilfreich?

Lösung

Leider nicht.

Wenn Sie den Rest Ihres Batch als dynamischer SQL ausführen können.

Mit execute dynamisch SQL ausgeführt wird den Kontext für den Umfang der execute Aussage ändern, aber nicht nachhaltig Wirkung auf den Bereich verlassen Sie die execute Anweisung ausführen.

Mit anderen Worten folgt aus:

DECLARE @db VARCHAR(100)
SET @db = 'SweetDB'
EXECUTE('use ' + @db)

Wird nicht die aktuelle Datenbank fest eingestellt, aber wenn Sie den obigen Code wie folgt geändert:

DECLARE @db VARCHAR(100)
SET @db = 'SweetDB'
EXECUTE('use ' + @db + ';select * from sysobjects')
select * from sysobjects

Dann wird das Ergebnis dieser beiden Abfragen unterschiedlich sein (vorausgesetzt, du bist nicht in SweetDB bereits), da die erste Auswahl, ausgeführt innerhalb execute in SweetDB Ausführung, aber die zweite nicht.

Andere Tipps

declare @NewDB varchar(50)
set @NewDB = 'NewDB'
execute('use ' + @NewDB)

#TempTables wird presist über GOs

können Sie die Tabelle in der ersten Partie, insert / select Daten nach Bedarf in die oder jede folgende Batch erstellen.

Hier einige Beispiel-Syntax:

CREATE TABLE #YourTableName
(
     col1   int         not null   primary key   identity(1,1)
    ,col2   varchar(10)
)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top