Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Problemas de Syntax con sentencia WITH en SQL 2000

Estas en el tema de Problemas de Syntax con sentencia WITH en SQL 2000 en el foro de SQL Server en Foros del Web. Estimados, ojalá alguien me pueda ayudar. Tenemos una aplicación hecha en VS.NET con SQL server 2005 y la estamos subiendo a un Hosting que funciona ...
  #1 (permalink)  
Antiguo 01/04/2011, 09:38
 
Fecha de Ingreso: febrero-2011
Mensajes: 1
Antigüedad: 13 años, 10 meses
Puntos: 0
Problemas de Syntax con sentencia WITH en SQL 2000

Estimados, ojalá alguien me pueda ayudar.

Tenemos una aplicación hecha en VS.NET con SQL server 2005 y la estamos subiendo a un Hosting que funciona con Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) y usa un interfaz Web para asministrar las bases de datos llamado ASP.NET Enterprise Manager 0.1.3.

Ya creamos todas las tablas de la BD en el hosting y subimos casi todos los Store Procedure, salvo 1 que me arroja un error de sintaxis que el SQL 2005 No arroja.

El mensaje de error es el siguiente:
ERROR: Line 8:Incorrect syntax near ';'. Incorrect syntax near the keyword 'WITH'. Incorrect syntax near the keyword 'end'. Source: .Net SqlClient Data Provider.

He borrado el punto y coma ';' y he modificado los paréntesis basado en literatura de Internet pero sigue arrrojando otros errores de Sintaxis. Si alguien me puede ayudar se lo agradezco muchísimo!!!!! Gracias Anticipadas.

Les copio el SP:
CREATE PROCEDURE [dbo].[SP_REPROGRAMACION_REAL]
@cod_proyecto varchar(20),
@id_etapa varchar(20)
as
begin

;WITH afr1 AS (SELECT * FROM Avance_fisico_real)
update Avance_fisico_real
set
Cant_prog_parcial = afr1.Cant_prog_parcial,
Cant_prog_parcial_acum = afr1.Cant_prog_parcial_acum,
Cant_Avance_fisico = afr1.Cant_Avance_fisico,
Cant_avance_fisico_acum = afr1.Cant_avance_fisico_acum,
Porcen_prog_parcial = afr1.Porcen_prog_parcial,
Porcen_prog_parcial_acum = afr1.Porcen_prog_parcial_acum,
Porcen_real_parcial = afr1.Porcen_real_parcial,
Porcen_real_parcial_acum = afr1.Porcen_real_parcial_acum,
Costo_Planif_Parcial = afr1.Costo_Planif_Parcial,
Costo_Planif_Acum = afr1.Costo_Planif_Acum,
Costo_Teorico = afr1.Costo_Teorico,
Costo_Teorico_Acum = afr1.Costo_Teorico_Acum
from Avance_fisico_real afr2, afr1
where afr1.cod_proyecto = @cod_proyecto
and afr1.id_etapa = @id_etapa
and afr1.num_cambio_prog = ( select max(num_cambio_prog) - 1 from Avance_fisico_real
where cod_proyecto = afr1.cod_proyecto and
id_etapa = afr1.id_etapa and
Cod_partida = afr1.cod_partida and
Año = afr1.año and
Mes = afr1.mes and
semana = afr1.semana)
and (afr2.cod_proyecto = afr1.cod_proyecto
and afr2.id_etapa = afr1.id_etapa
and afr2.num_cambio_prog = afr1.num_cambio_prog + 1
and afr2.Año = afr1.Año
and afr2.Mes = afr1.Mes
and afr2.semana = afr1.semana
and afr2.cod_partida = afr1.cod_partida)

;WITH vf1 AS (SELECT * FROM Vista_Fisico)
update Vista_Fisico
set
Proyectado = vf1.Proyectado,
Real = vf1.Real,
Cumplimiento = vf1.Cumplimiento,
estado = vf1.estado
from Vista_Fisico vf2, vf1
where vf1.cod_proyecto = @cod_proyecto
and vf1.id_etapa = @id_etapa
and vf1.num_cambio_prog = (select max(num_cambio_prog) - 1 from Vista_Fisico where cod_proyecto = @cod_proyecto and id_etapa = @id_etapa )
and (vf2.cod_proyecto = vf1.cod_proyecto
and vf2.id_etapa = vf1.id_etapa
and vf2.num_cambio_prog = vf1.num_cambio_prog + 1
and vf2.Año = vf1.Año
and vf2.Mes = vf1.Mes
and vf2.semana = vf1.semana)

end
  #2 (permalink)  
Antiguo 01/04/2011, 11:48
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Respuesta: Problemas de Syntax con sentencia WITH en SQL 2000

La version 2000 y anteriores, no soportan los CTE, por tanto la instrucion WITH, no esta soportada
__________________
MCTS Isaias Islas

Etiquetas: sentencia, sql2000
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:21.