Heim > Datenbank > MySQL-Tutorial > Warum gibt meine gespeicherte T-SQL-Prozedur den Fehler „Die Skalarvariable muss deklarieren' aus und wie kann ich das beheben?

Warum gibt meine gespeicherte T-SQL-Prozedur den Fehler „Die Skalarvariable muss deklarieren' aus und wie kann ich das beheben?

DDD
Freigeben: 2024-12-24 04:13:23
Original
398 Leute haben es durchsucht

Why Does My T-SQL Stored Procedure Throw a

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);
Nach dem Login kopieren

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;
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage