Instrucción With

25/02/2008 - 14:46 por Aventurero | Informe spam
Buenos días.
Tengo instalado SQL Server 2005 St.

Tengo un SP, con la siguiente sentencia.

with cte
as
(
select *, row_number() over(partition by cedula order by cedula) as rn
from TblClientes
)
select
*
into TblClientAux
from
cte
where
rn = 1

Con nivel de compatibilidad: Sql Server 2000 (80), funciona bien.

Con nivel de compatibilidad: Sql Server 2005 (90), No ejecuta y da el
siguiente error:

Mens 319, Nivel 15, Estado 1, Procedimiento p_ProcesarProduccion, Línea 163
Sintaxis incorrecta junto a la palabra clave 'with'.
Si esta instrucción es una expresión de tabla común o una cláusula
xmlnamespaces,
la instrucción anterior debe terminarse con punto y coma (;).

Quiero utilizar compatibilidad Sql Server 2005 (90).
Qué debo corregir en la Sentencia?

Si me pueden ayudar con un Link acerca de uso de With les agradecería.

Atentemante,


Aventurero.

Preguntas similare

Leer las respuestas

#1 Gux (MVP)
25/02/2008 - 15:55 | Informe spam
Estoy confundido.

Cómo puede ser que WITH funcione en modo de compatibilidad 80 si dicha
sintaxis es nueva en la versión 2005 (compatibilidad 90) ?

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/profile/gux
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Aventurero" wrote:

Buenos días.
Tengo instalado SQL Server 2005 St.

Tengo un SP, con la siguiente sentencia.

with cte
as
(
select *, row_number() over(partition by cedula order by cedula) as rn
from TblClientes
)
select
*
into TblClientAux
from
cte
where
rn = 1

Con nivel de compatibilidad: Sql Server 2000 (80), funciona bien.

Con nivel de compatibilidad: Sql Server 2005 (90), No ejecuta y da el
siguiente error:

Mens 319, Nivel 15, Estado 1, Procedimiento p_ProcesarProduccion, Línea 163
Sintaxis incorrecta junto a la palabra clave 'with'.
Si esta instrucción es una expresión de tabla común o una cláusula
xmlnamespaces,
la instrucción anterior debe terminarse con punto y coma (;).

Quiero utilizar compatibilidad Sql Server 2005 (90).
Qué debo corregir en la Sentencia?

Si me pueden ayudar con un Link acerca de uso de With les agradecería.

Atentemante,


Aventurero.



Respuesta Responder a este mensaje
#2 Alejandro Mesa
25/02/2008 - 16:00 | Informe spam
Aventurero,

Asegurate de que la sentencia previa a la declaracion de la cTE, termine en
";" punto y coma.

;WITH ...


AMB

"Aventurero" wrote:

Buenos días.
Tengo instalado SQL Server 2005 St.

Tengo un SP, con la siguiente sentencia.

with cte
as
(
select *, row_number() over(partition by cedula order by cedula) as rn
from TblClientes
)
select
*
into TblClientAux
from
cte
where
rn = 1

Con nivel de compatibilidad: Sql Server 2000 (80), funciona bien.

Con nivel de compatibilidad: Sql Server 2005 (90), No ejecuta y da el
siguiente error:

Mens 319, Nivel 15, Estado 1, Procedimiento p_ProcesarProduccion, Línea 163
Sintaxis incorrecta junto a la palabra clave 'with'.
Si esta instrucción es una expresión de tabla común o una cláusula
xmlnamespaces,
la instrucción anterior debe terminarse con punto y coma (;).

Quiero utilizar compatibilidad Sql Server 2005 (90).
Qué debo corregir en la Sentencia?

Si me pueden ayudar con un Link acerca de uso de With les agradecería.

Atentemante,


Aventurero.



Respuesta Responder a este mensaje
#3 Aventurero
25/02/2008 - 17:25 | Informe spam
Gracias a Gustavo y a Alejandro por responder.

Yo tampoco entiendo por qué no funciona con nivel de compatibilidad: Sql
Server 2005 (90), con
Sql Server 2000 (80) si.
Siguiendo el consejo de Alejandro, le coloque un ";" en la sentencia
anterior y se ejecuta bien con (90).

Gracias.

Atentamente,


Aventurero
Respuesta Responder a este mensaje
#4 Alejandro Mesa
25/02/2008 - 20:44 | Informe spam
Aventurero,

Yo tampoco entiendo por qué no funciona con nivel de compatibilidad: Sql
Server 2005 (90), con
Sql Server 2000 (80) si.



Porque en la version 2000 el punto y coma no es requerido.


AMB

"Aventurero" wrote:

Gracias a Gustavo y a Alejandro por responder.

Yo tampoco entiendo por qué no funciona con nivel de compatibilidad: Sql
Server 2005 (90), con
Sql Server 2000 (80) si.
Siguiendo el consejo de Alejandro, le coloque un ";" en la sentencia
anterior y se ejecuta bien con (90).

Gracias.

Atentamente,


Aventurero



Respuesta Responder a este mensaje
#5 Alejandro Mesa
25/02/2008 - 20:50 | Informe spam
Aventurero,

Me falto decir que preferible uses el punto y coma para que la sentencia
trabaje en las dos versiones.

AMB

"Alejandro Mesa" wrote:

Aventurero,

> Yo tampoco entiendo por qué no funciona con nivel de compatibilidad: Sql
> Server 2005 (90), con
> Sql Server 2000 (80) si.

Porque en la version 2000 el punto y coma no es requerido.


AMB

"Aventurero" wrote:

> Gracias a Gustavo y a Alejandro por responder.
>
> Yo tampoco entiendo por qué no funciona con nivel de compatibilidad: Sql
> Server 2005 (90), con
> Sql Server 2000 (80) si.
> Siguiendo el consejo de Alejandro, le coloque un ";" en la sentencia
> anterior y se ejecuta bien con (90).
>
> Gracias.
>
> Atentamente,
>
>
> Aventurero
>
>
>
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida