Dynamisches SQL kann nicht innerhalb einer Funktion ausgeführt werden. Genausowenig können Stored Procedures aufgerufen werden. Der einzige Workaround hier ist, eine andere Logik anzuwenden, um um den dynamischen Teil herumzukommen. So führt z.B. folgendes zu einem Fehler:
USE PUBS
GO
CREATE FUNCTION dbo.showMe(@tableName NVARCHAR(20))
RETURNS INT
AS
BEGIN
DECLARE @stmt NVARCHAR(150)
DECLARE @rowcount INT
SELECT @stmt = 'SELECT @count = COUNT(*) FROM ' + @tableName
EXEC sp_executesql @stmt, N' @count int output', @rowcount OUTPUT
RETURN @rowCount
END
GO
SELECT dbo.showMe('authors')
Server: Nachr.-Nr. 557, Schweregrad 16, Status 2, Prozedur showMe, Zeile 8
Nur Funktionen und erweiterte gespeicherte Prozeduren können innerhalb einer Funktion ausgeführt werden.