Realizando Deletes con alias

06/11/2007 - 14:54 por Branko | Informe spam
Hola A todos:

El problema es bastante sencillo, utilizando alias me es posible realizar
tareas de select, sin embargo cuando deseo realizar un deletecon alias me
resonde con el error:

Mens. 102, Nivel 15, Estado 1, Línea 1
Sintaxis incorrecta cerca de 'a'.

la sentencia SQL es:
delete from tabla a where a.campo='valor'

Si ejectuto la sentencia sin alias (a, este funciona sim problemas)

Estoy trabajando con SQL 2005 x64 Enterprise y Service Pack 2, que en teoría
corrige este problema..
http://support.microsoft.com/kb/913371 que se encuentra en el Sp2 y c
laramente funciona con el select.

Alguna sugerencia?, tral vez la sintaxis en SQL 2005 no es la que estoy
usando?

Muchas Gracias
 

Leer las respuestas

#1 Leonardo Azpurua
06/11/2007 - 15:50 | Informe spam
"Branko" escribió en el mensaje
news:
Hola A todos:

El problema es bastante sencillo, utilizando alias me es posible realizar
tareas de select, sin embargo cuando deseo realizar un deletecon alias me
resonde con el error:

Mens. 102, Nivel 15, Estado 1, Línea 1
Sintaxis incorrecta cerca de 'a'.

la sentencia SQL es:
delete from tabla a where a.campo='valor'

Si ejectuto la sentencia sin alias (a, este funciona sim problemas)

Estoy trabajando con SQL 2005 x64 Enterprise y Service Pack 2, que en
teoría
corrige este problema..
http://support.microsoft.com/kb/913371 que se encuentra en el Sp2 y c
laramente funciona con el select.

Alguna sugerencia?, tral vez la sintaxis en SQL 2005 no es la que estoy
usando?



Hola.

La sintaxis suministrada en los BOL (para SQL 2000) establece una diferencia
entre el elemento sintáctico <table_name> que debe usarse en la instruccion
DELETE, y el elemento <table_source> que se usa tanto en los SELECT como en
el segundo FROM de la instrucción DELETE. Este adminte alias, mientras que
el primero requiere un nombre de tabla o la función OPENDATASOURCE.

Es decir que, formalmente y hasta donde entiendo, no hay manera de usar
alias en la tabla objeto de las eliminaciones.

En tu ejemplo basta con suprimir el alias, que de paso no hace ninguna
falta.

Nada impide que uses alias en cualquier subconsulta que debas hacer en el
WHERE.

Salud!

Preguntas similares