Heim > Datenbank > MySQL-Tutorial > Warum gibt meine gespeicherte SQL-Prozedur den Fehler „Muss die Skalarvariable deklarieren' aus?

Warum gibt meine gespeicherte SQL-Prozedur den Fehler „Muss die Skalarvariable deklarieren' aus?

Patricia Arquette
Freigeben: 2024-12-23 00:52:10
Original
1024 Leute haben es durchsucht

Why Does My SQL Stored Procedure Throw a

Enthüllung des Geheimnisses „Muss die Skalarvariable deklarieren“

Im Bereich der gespeicherten SQL-Prozeduren wird versucht, globale Eingabeparameter wie zu verwenden „@RowFrom“ und „@RowTo“ in dynamisch generierten SQL-Anweisungen können oft zu dem verwirrenden Fehler „Must declare the“ führen Skalare Variable.“

Dieses Problem tritt auf, weil die Parameter nicht explizit in der SQL-Zeichenfolge (@sqlstatement) deklariert werden, die zum Kompilieren der Abfrage verwendet wird. Um dies zu beheben, ist Folgendes erforderlich:

Verwenden Sie CONVERT(), um Variablen in Zeichenfolgen zu konvertieren:

Anstatt eine Variable vom Typ int direkt zu verketten, verwenden Sie CONVERT (), um es in einen String umzuwandeln. Zum Beispiel:

SET @sql = N'DECLARE @Rt int; SET @Rt = ' + CONVERT(VARCHAR(12), @RowTo);
Nach dem Login kopieren

Dadurch wird sichergestellt, dass der Wert von „@RowTo“ „@Rt“ als Zeichenfolge zugewiesen werden kann.

Verwenden Sie die moderne CONCAT()-Funktion:

In neueren SQL-Versionen vereinfacht die Funktion CONCAT() die Parameterverkettung, sodass keine manuelle Eingabe erforderlich ist Konvertierung.

SET @sql = CONCAT(N'SELECT ', @RowTo, ' * 5');
Nach dem Login kopieren

Sichere Parametrisierung übernehmen:

Es wird jedoch dringend empfohlen, sich für eine ordnungsgemäße Parametrisierung anstelle einer Zeichenfolgenverkettung zu entscheiden. Dieser Ansatz minimiert das Risiko einer SQL-Injection, indem SQL-Code von Benutzereingabeparametern getrennt wird.

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 vonWarum gibt meine gespeicherte SQL-Prozedur den Fehler „Muss die Skalarvariable deklarieren' aus?. 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