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
verwenden Sie die richtige Syntax, um „@RowTo“ in eine Zeichenfolge umzuwandeln:
SET @Rt = ' + CONVERT(VARCHAR(12), @RowTo)
Moderne Versionen von SQL Server unterstützen die CONCAT()-Funktion, die vereinfacht diese Vorgänge:
SET @sql = N'SELECT ' + CONVERT(varchar(12), @RowTo) + ' * 5';
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;
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!