Fehler: "Muss die Skalarvariable deklarieren" für Insert-statementen in mehreren databaseen

Ich habe ein SQL-Skript erstellt, um einen Eintrag in einer anderen database hinzuzufügen. Allerdings, wenn ich das Skript über SQL server Management Studio ausführen.

declare @address varchar(50) set @address = 'Hope' use DB1 go insert into Address values (@address) go use DB2 go insert into Address values (@address) go 

Ich habe folgende Fehlermeldung:

Muss die Skalarvariable '@ adress' deklarieren

An diesem Punkt bin ich total verwirrt, weil ich die Variable @address deklariert habe, bevor ich die insert statement ausführte. Ist es, weil ich verschiedene database durchquere?

Ab jetzt habe ich gerade den tatsächlichen Wert in die insert statement gesetzt, nur um der Aufgabe zu beenden, obwohl ich mich fragte, was den Fehler verursacht hat.

die Variable @ adress lebt nur in der Charge, die sie definiert hat, Chargen werden durch die go-statement abgegrenzt, wo sie außerhalb des Geltungsbereichs liegt.

Versuche dies:

 declare @address varchar(50) set @address = 'Hope' insert into DB1.dbo.Address values (@address) insert into DB2.dbo.Address values (@address) go 

Es ist die GO-statement.

Alle lokalen variablesdeklarationen müssen in einer einzigen Charge gruppiert werden. Dies geschieht durch einen GO-Befehl bis nach der letzten statement, die auf die Variable verweist. ( von MSDN )

Es liegt daran, dass du zwischen der statement, die die Variable deklariert, und die statement, die sie verwendet, verwendet.

Der Befehl go ist kein SQL-Befehl, es ist ein Trennzeichen zwischen den Sessions in Management Studio. Entfernen Sie einfach alle go Befehle in Ihrer Abfrage, und Sie können die Variable den ganzen path verwenden.