Heim > Datenbank > MySQL-Tutorial > Wie behebt man den Fehler „Die Skalarvariable ‚@RowFrom' muss deklariert werden' bei der Verwendung globaler Eingabeparameter in gespeicherten Prozeduren?

Wie behebt man den Fehler „Die Skalarvariable ‚@RowFrom' muss deklariert werden' bei der Verwendung globaler Eingabeparameter in gespeicherten Prozeduren?

Mary-Kate Olsen
Freigeben: 2024-12-17 00:24:25
Original
905 Leute haben es durchsucht

How to Fix

Kompilierungsfehler mit den globalen Eingabeparametern „@RowFrom“ und „@RowTo“ beheben

In einer gespeicherten Prozedur erfolgt die Deklaration globaler Eingabeparameter erforderlich, um sie im Rahmen des Verfahrens verwenden zu können. Beim Ausführen einer kompilierten SQL-Abfrage innerhalb der gespeicherten Prozedur mit „Exec(@sqlstatement)“ kann jedoch der Fehler „Die Skalarvariable ‚@RowFrom‘ muss deklariert werden“ auftreten, wenn die Eingabeparameter „@RowFrom“ oder „@RowTo“ vorhanden sind nicht ordnungsgemäß deklariert oder verwendet.

Die bereitgestellte Fehlermeldung weist darauf hin, dass die Variable „@RowFrom“ nicht deklariert wurde. Um dieses Problem zu beheben, deklarieren Sie „@RowFrom“ und „@RowTo“ explizit als Skalarvariablen innerhalb der gespeicherten Prozedur, bevor Sie in der SQL-Abfrage auf sie verweisen.

Zusätzlich, wenn Sie versuchen, den Wert von „@RowTo“ zuzuweisen Wenn Sie mithilfe der Verkettung eine neue Variable erstellen möchten, stellen Sie sicher, dass der Variablentyp ordnungsgemäß konvertiert wird. Anstelle der falschen Syntax

SET @Rt = ' + @RowTo
Nach dem Login kopieren

verwenden Sie die richtige Syntax, um „@RowTo“ in eine Zeichenfolge umzuwandeln:

SET @Rt = ' + CONVERT(VARCHAR(12), @RowTo)
Nach dem Login kopieren

Moderne Versionen von SQL Server unterstützen die CONCAT()-Funktion, die vereinfacht diese Vorgänge:

SET @sql = N'SELECT ' + CONVERT(varchar(12), @RowTo) + ' * 5';
Nach dem Login kopieren

Für eine bessere Sicherheit gegen SQL-Injection wird jedoch empfohlen, parametrisierte SQL-Anweisungen anstelle von Verkettungen zu verwenden. Dabei werden Eingabeparameter explizit an die SQL-Abfrage übergeben, wie im folgenden Beispiel:

SET @sql = @sql + ' WHERE RowNum BETWEEN @RowFrom AND @RowTo;';

EXEC sys.sp_executesql @sql,
  N'@RowFrom int, @RowTo int',
  @RowFrom, @RowTo;
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie behebt man den Fehler „Die Skalarvariable ‚@RowFrom' muss deklariert werden' bei der Verwendung globaler Eingabeparameter in gespeicherten Prozeduren?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage