Podrias poner un ejemplo de la sintaxis que te marca el error..
los siguientes funcionan en SQL 2008...
Código:
if OBJECT_ID('tempdb..#tmpUno') is not null drop table #tmpUno
create table #tmpUno (id int identity (1,1), valor VARCHAR(10))
INSERT INTO #tmpUno
execute ('
select ''primero''
')
INSERT INTO #tmpUno
execute ('
execute sp_executesql N''SELECT ''''segundo'''' ''
')
alter table #tmpUno add otraColumn varchar(10) not null default('')
execute ('INSERT INTO #tmpUno(valor, otraColumn)
execute sp_executesql N''SELECT ''''tercero'''', ''''dato3'''' ''
')
select * from #tmpUno
---------------------------------------------------------
Resultado!
id valor otraColumn
----------- ---------- ----------
1 primero
2 segundo
3 tercero dato3
Solo como comentario, por experiencia propia evitamos el uso de alter tables para generar resultados de tablas con columnas dinamicas..
Lo mejor es regresar la informacion segun su estructura de dominio original y es en el lado del cliente (aplicacion o servicio de reporte) en donde se le da la vista o el formato requerido por el usuario..
esto te libera muchos recursos en tu servidor sql y el formateo del lado del cliente (aplicacion) es mucho mas eficiente y rapido...
Saludos!