Grundlegende Syntax dynamischer SQL-Anweisungen
1: Gewöhnliche SQL-Anweisungen können mit Exec ausgeführt werden
Beispiel: Wählen Sie * aus Tabellenname aus
Exec('select * from tableName')
Exec sp_executesql N'select * from tableName' – Bitte beachten Sie, dass N vor der Zeichenfolge hinzugefügt werden muss
2: Wenn Feldnamen, Tabellennamen, Datenbanknamen usw. als Variablen verwendet werden, muss dynamisches SQL verwendet werden
z.B:
deklariere @fname varchar(20)
set @fname = 'FiledName'
Wählen Sie @fname aus Tabellenname – Fehler, es wird kein Fehler angezeigt, aber das Ergebnis ist ein fester Wert „FiledName“, was nicht Ihren Wünschen entspricht.
Exec('select ' + @fname + ' from tableName') – Bitte beachten Sie, dass die einfachen Anführungszeichen vor und nach dem Pluszeichen Leerzeichen enthalten.
Natürlich können Sie die Zeichenfolge auch in eine variable Form ändern
deklariere @fname varchar(20)
set @fname = 'FiledName' – Legen Sie den Feldnamen fest
deklariere @s varchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) – Erfolg
exec sp_executesql @s – dieser Satz meldet einen Fehler
deklarieren Sie @s Nvarchar(1000) – beachten Sie, dass es in nvarchar(1000) geändert wird.
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) – Erfolg
exec sp_executesql @s – Dieser Satz ist korrekt
3. Ausgabeparameter
deklariere @num int,
@sqls nvarchar(4000)
set @sqls='select count(*) from tableName'
exec(@sqls)
--Wie füge ich das Exec-Ausführungsergebnis in eine Variable ein?
deklariere @num int,
@sqls nvarchar(4000)
set @sqls='select @a=count(*) from tableName '
exec sp_executesql @sqls,N'@a int Output',@num Output
Wählen Sie @num
Wenn Sie einfache Anführungszeichen „“ in der SQL-Anweisungszeichenfolge verwenden möchten, können Sie „“ verwenden.