Gibt es eine Möglichkeit, eine Datenbank aus einer Variablen zu wählen?
-
06-09-2019 - |
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
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)
)