¿En que RDBMS?
En SQL Server puedes usar:
EXEC (@sql)
EXECUTE (@sql)
sp_execute @sql
sp_executesql @sql
El EXEC es una mala práctica, por cuestiones de rendimiento (y no recuerdo si de seguridad), se recomienda siempre usar sp_executesql siempre qeu además da ventajas adicionales (como variables de salida)
Te recomiendo leer
este excelente documento (ingles)