Dynamic SQL ist eine Programmiertechnik, die es ermöglicht SQL Befehle zur Laufzeit zu generieren. Dadurch hat man die Möglichkeit flexible SQL Statements zu generieren. Die generierten SQL-Befehle kann man entweder mittels EXEC oder sp_executesql ausführen, wobei sp_executesql den Vorteil hat, dass man Parameter verwenden kann (siehe dazu hier)
DECLARE @sqlCommand as nvarchar(MAX) = N'SELECT * FROM ' + @Schema + '.' + @Table; EXEC (@sqlCommand) EXEC sp_executesql N'SELECT * FROM ' + @Schema + '.' + @Table;
Problemfelder:
- Ausführung EXEC vs. sp_executesql
- dynamisches SQL und Output Parameter
- dynamisches SQL und SQL Injection