Как уже упоминал Мартин, вы не можете напрямую, но вы можете написать хранимую процедуру для выполнения удаления.
Сравнение
EXEC SLOW_DELETE 'TestTable', 1
с
DELETE FROM TestTable WHERE ID = 1
не большая разница, хотя (помимо потери производительности).
Хранимая процедура
CREATE PROCEDURE SLOW_DELETE(@TableName sysname, @ID INT) AS
BEGIN
IF ((SELECT COUNT(*) FROM sys.tables WHERE name=@TableName) <> 1)
BEGIN
RAISERROR('Ambiguous or non existent table name passed %s',16,1,@TableName)
RETURN
END
DECLARE @Stmt nvarchar(500)
SET @Stmt = 'DELETE FROM ' + QUOTENAME(@TableName) + ' WHERE ID = @ID'
EXEC sp_executesql @Stmt, N'@ID INT', @ID = @ID
END
Интересно, что вы надеетесь получить от использования такогоподход.Возможно, если вы расширите свои мотивы, мы могли бы предложить альтернативный подход.