Skalare Variable muss deklariert werden: Beheben des Fehlers
Beim Ausführen einer SQL-Abfrage innerhalb einer gespeicherten Prozedur mit T-SQL kommt es häufig dazu Bei der Verwendung globaler Eingabeparameter wie @RowFrom und @RowTo tritt der Fehler „Muss die Skalarvariable deklarieren“ auf. Dieses Problem tritt auf, wenn die Prozedur versucht, diese Parameter innerhalb der @sqlstatement-Variablen zu verwenden.
Verstehen des Fehlers
Der Fehler tritt auf, weil T-SQL alle skalaren Variablen erwartet. einschließlich der als Eingabeparameter definierten Parameter, die explizit deklariert werden müssen, bevor sie verwendet werden können. Im gegebenen Szenario sind @RowFrom und @RowTo nicht innerhalb der @sqlstatement-Variablen deklariert, was zu dem Fehler führt.
Lösung: Parameter deklarieren
Um diesen Fehler zu beheben , müssen wir die Skalarvariablen innerhalb der @sqlstatement-Variablen deklarieren. Dies kann mit der DECLARE-Anweisung erreicht werden, wie im modifizierten Code unten gezeigt:
SET @sql = N'DECLARE @Rt int; SET @Rt = ' + CONVERT(VARCHAR(12), @RowTo);
In diesem Code deklarieren wir die Skalarvariable @Rt und weisen ihr den Wert von @RowTo zu, nachdem wir sie in konvertiert haben eine Zeichenfolge mit der CONVERT-Funktion. Dadurch wird sichergestellt, dass @Rt ordnungsgemäß deklariert ist und innerhalb der @sqlstatement-Variablen verwendet werden kann.
Concat vs. Parametrisierung
Während die Verkettung zum Erstellen der SQL-Zeichenfolge verwendet werden kann Aus Sicherheitsgründen wird im Allgemeinen empfohlen, die Parametrisierung zu verwenden. Durch die Verwendung von Parametern minimieren wir das Risiko von SQL-Injection-Angriffen. Der untenstehende modifizierte Code veranschaulicht, wie die Parametrisierung verwendet werden kann:
SET @sql = N'SELECT @RowFrom, @RowTo;'; EXEC sys.sp_executesql @sql, N'@RowFrom int, @RowTo int', @RowFrom, @RowTo;
Durch die Verwendung der Parametrisierung stellen wir der gespeicherten Prozedur die Werte von @RowFrom und @RowTo zur Verfügung, ohne sie in der SQL-Anweisung zu verketten, wodurch die Sicherheit von gewährleistet wird unser Code.
Das obige ist der detaillierte Inhalt vonWarum gibt meine gespeicherte T-SQL-Prozedur den Fehler „Die Skalarvariable muss deklarieren' aus und wie kann ich das beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!