Muss die skalare Variable deklarieren
@RowFrom int`
@RowTo int
sind beide Global Input Params für die Stored Procedure, und da ich die SQL-Abfrage innerhalb der Stored Procedure mit T-SQL kompiliere und dann Exec(@sqlstatement)
am Ende der Stored Procedure verwende, um das Ergebnis anzuzeigen, bekomme ich diese Fehlermeldung, wenn ich versuche, @RowFrom
oder @RowTo
innerhalb der @sqlstatement
-Variable zu verwenden, die ausgeführt wird... sonst funktioniert es gut... bitte helfen Sie.
"Must declare the scalar variable "@RowFrom"."
Außerdem habe ich versucht, Folgendes in die Variable @sqlstatement
aufzunehmen:
'Declare @Rt int'
'SET @Rt = ' + @RowTo
aber @RowTo
übergibt seinen Wert immer noch nicht an @Rt
und erzeugt einen Fehler.
70
3
Sie können einen int nicht mit einem String verketten. Stattdessen:
brauchen Sie:
Um zu verdeutlichen, was hier passiert. Sagen wir @RowTo = 5.
Um diese Zahl in eine Zeichenkette zu verwandeln (auch wenn sie letztendlich eine Zahl sein wird), muss ich sie umwandeln. Aber wie Sie sehen können, wird die Zahl immer noch als Zahl behandelt, wenn sie ausgeführt wird. Die Antwort ist 25, richtig?
In Ihrem Fall brauchen Sie @Rt usw. innerhalb der @sql-Zeichenkette nicht wirklich neu zu deklarieren, Sie brauchen nur zu sagen:
Allerdings wäre es besser, eine richtige Parametrisierung vorzunehmen, z.B.
Nur zu Ihrer Information, ich weiß, dies ist ein alter Beitrag, aber je nach Datenbank COLLATION Einstellungen können Sie diesen Fehler auf eine Anweisung wie diese erhalten,
wenn man zum Beispiel das S in der Anweisung
Entschuldigen Sie, dass ich die Antworten, die hier bereits gepostet wurden, noch einmal aufgreife, aber dies ist ein tatsächliches Beispiel für den gemeldeten Fehler.
Beachten Sie auch, dass der Fehler das große S in der Meldung nicht anzeigt. Ich bin mir nicht sicher, warum, aber ich denke, es liegt daran, dass die
auf der linken Seite des Gleichheitszeichens steht.
Die Groß-/Kleinschreibung wird auch dieses Problem verursachen.
@MyVariable und @myvariable sind die gleichen Variablen in SQL Server Man. Studio und werden funktionieren. Diese Variablen führen jedoch in Visual Studio (C#) aufgrund von Unterschieden in der Groß-/Kleinschreibung zu einer "Muss die skalare Variable "@MyVariable" deklarieren.