Warum funktioniert EXEC-retport ein Fehler der ERKLÄREN MUß, SKALARE VARIABLE
Habe ich Schwierigkeiten mit dem script unten und ich kann nicht herausfinden, einen besseren Weg, es zu tun.
Erkennt jemand das problem? Ich bin deklarieren Sie die variable korrekt. Warum ist es aufgetreten? Vielen Dank für Ihre Hilfe!
DECLARE @var1 as VarChar(50)
DECLARE @var2 as VarChar(50)
SET @Var1 = '1, 2, 3, 4, 5'
EXEC('IF (select count(*) from Table1 where Column1 in (' + @Var1 + ')) = 5
SET @Var2 = ''True''
ELSE
SET @Var2 = ''False''')
SELECT @Var2
Fehlermeldung:
ERKLÄREN MUß, SKALARE VARIABLE, @Var2
siehe this
InformationsquelleAutor user2146755 | 2013-03-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie
sp_executesql
wenn Sie wollen, um Werte von Parametern.Verkürzen der Abfrage verwenden
CASE
.wenn Sie wissen möchten, ob alle
ID
aus@Var1
auf dem Tisch, Sie müssen auch verwendenDISTINCT
InformationsquelleAutor John Woo
Da exec ausgeführt wird, den dynamischen Teil von SQL, die in einfache Anführungszeichen. Aber @var2 deklariert ist außerhalb exec. Um dieses Problem zu lösen, erklären und wählen Sie @var2 innen exec oder verwenden von @var2 als set '+@var2+'
InformationsquelleAutor KS Tech
Verwenden von sp_executeSQL anstelle von exec und verwenden Sie ein output-parameter
E. g. Wie man von sp_executesql Ergebnis in eine variable?
Beispielsweise
InformationsquelleAutor Preet Sangha
Gibt es da zwei Sachen.. Erstens wo sind die ";" Ende der Sätze. Auch Sie brauchen, um stengel die varchar-Werte.
Stimme mit den anderen Antworten... verwenden von sp_executeSQL zur Ausführung der dynamischen sql.
Einem Beispiel erklären....
Beispiel von sp_executeSQL..
InformationsquelleAutor lemil77
Es gibt viele Gründe, zu bleiben Weg von ausführen von sql-Zeichenfolgen. Würde ich diese umschreiben zu:
für die Split-Funktion finden Sie unter: HIER
InformationsquelleAutor JBrooks