SQL-Management-Studio und Bind-variables

Meine database-Entwicklung Fähigkeiten sind ziemlich begrenzt, aber ich habe vor kurzem einige Arbeit in Oracle SQL-Entwickler, die Binde-Variable (dh ": bv1") als Parameter Platzhalter verwendet.

Jetzt habe ich etwas Ähnliches in irgendeiner Arbeit gemacht, die in MS SQL server Management Studio (2012 Version) mit "@ BV1" als Parameter aber wenn ich teste die Abfrage im Management Studio Ich kann nicht herausfinden, wie man die Parameter ( dh bei der Ausführung tatsächliche Werte zu geben). Oracle SQL verwendet, um Pop-up mit einem Feld, um Werte hinzuzufügen, wenn Sie die Ausführung starten, aber ich kann nicht etwas ähnliches in der MS-Version zu finden.

EDIT: also nur um ein Beispiel dafür zu geben, was ich versuche zu führen. Ich habe eine select-statement mit einer where-Klausel wie folgt:

WHERE FIELD_NAME in ( @BV1,@BV2,@BV3,@BV4,@BV5,@BV6,@BV7,@BV7,@BV8,@BV8) 

Es, wenn ich klicke es ausführen nur Fehler sagen: "Muss deklarieren die Skalar-Variable" @ BV1 "." wo in Oracle würde es normalerweise dann auffordern, Werte für die BVs zu liefern.

Du kannst das in SQL Management Studio nicht machen. Sie müssten deklarieren und setzen Sie Ihre variables in das Skript:

 DECLARE @my_int INT SET @my_int = 0 

Sie müssen immer Ihre variables zuerst in einem Skript deklarieren:

 DECLARE @BV1 AS INT = 1; 

SQL Management Studio wird nicht aufgefordert, sie für Sie zu deklarieren, wenn sie ausgeführt werden.

Wie auch immer in deinem Beispiel, es scheint, als wolltest du einfach etwas einfaches wie:

 WHERE FIELD_NAME in ( 1 ,2 ,3 ) 

SSMS unterstützt nicht direkt parametrisierte Abfragen (Sie können sp_executesql verwenden, wenn die Abfrage wirklich parametriert werden muss).

Eine Vorlage mit lokalen variables kann verwendet werden, um zur Wertersetzung aufzufordern. Drücken Sie SHIFT-CTRL-M, um den Substitutionsdialog anzuzeigen. Vorlage Beispiel unten.

 DECLARE @BV1 sysname = <@BV1, sysname, BV1 value> , @BV2 sysname = <@BV2, sysname, BV2 value> , @BV3 sysname = <@BV3, sysname, BV3 value> , @BV4 sysname = <@BV4, sysname, BV4 value> , @BV5 sysname = <@BV5, sysname, BV5 value> , @BV6 sysname = <@BV6, sysname, BV6 value> , @BV7 sysname = <@BV7, sysname, BV7 value> , @BV8 sysname = <@BV8, sysname, BV8 value>; SELECT ... WHERE FIELD_NAME in ( @BV1,@BV2,@BV3,@BV4,@BV5,@BV6,@BV7,@BV7,@BV8,@BV8);