procedimiento almacenado

03/03/2004 - 11:57 por Manuel | Informe spam
Hola gente!

tengo el siguiente problema y no tengo ni idea de como solucionarlo, haber
si me explico:

Cuando estoy haciendo un procedimiento almacenado y pulso "Comprobar la
sintaxis" me responde: "comprobacion de sintacxis correcta" pero... cuando a
continuacion pulso el boton de Aceptar, me dice: Error 207. El nombre de
colmna 'T.Fecha BETWEEN" no es valido.

Alguna idea????

Mil gracias por su atención
Saludos

Preguntas similare

Leer las respuestas

#6 Manuel
03/03/2004 - 17:52 | Informe spam
Ulises,
eso probado en el analizador de consulta funciona... pero cuando lo pongo en
un procedimiento almacenado, me sigue dando el mismo error cuando pulso el
boton de aplicar.



"ulises" escribió en el mensaje
news:66ca01c40128$253079b0$
Hum, creo que coloque ON cuando debería decir OFF, crea
una tabla :

CREATE table tempo ( fecha datetime )

y luego prueba lo siguiente :

SET QUOTED_IDENTIFIER ON
declare @sql varchar(70)
SET @sql = "SELECT * FROM tempo WHERE "
SET @sql = @sql + " fecha >= '20030401'"
EXEC(@sql)

te debería dar el siguiente error :

Server: Msg 207, Level 16, State 3, Line 3
Invalid column name 'SELECT * FROM tempo WHERE '.
Server: Msg 207, Level 16, State 1, Line 4
Invalid column name ' fecha >= '20030401''.

en cambio si lo colocas en OFF

SET QUOTED_IDENTIFIER OFF
declare @sql varchar(70)
SET @sql = "SELECT * FROM tempo WHERE "
SET @sql = @sql + " fecha >= '20030401'"
EXEC(@sql)


te debe retornar :

fecha

Saludos,
Ulises


esa solucion no ve vale... si entro dentro de mi


procedimiento almacenado y
pongo lo que me dices me sigue saliendo el mismo error


cuando doy al boton
de aplicar... tambien lo he ejectuado en el analizador de


consultas y luego
he intentado cambiar el procedimiento y sigue dando


error...

Mil gracias Ulises



"ulises" escribió en el


mensaje
news:61e101c40122$3514d4d0$
En el BOL revisa el tema de SET QUOTED_IDENTIFIER, cuando
este parametro se encuentra en ON te permitirá lo que
pides.

Saludos,
Ulises

Hola y gracias por responder...

la cuestion es q está igual que otros procedimientos y


funciona
correctamente...
el problema que yo veo es q no entiende bien el tema de


las comillas simples
y comillas dobles. Yo quiero concatenar la fecha que me


pasan como
paramentro de entrada (y q es opcional ademas de otros


muchos parametros) a
una select, la fecha debe ir entre comillas simples para


poderla ejecutar la
sentencia, entonces:

@sql = @sql + " Fecha >= '" + cast(@FechaInicio as




varchar
(20)) + "'"
(@sql es la variable q contien la sentencia select a


ejecutar)

con esta sintaxis me dice que no encuentra el


campo "Fecha >= ' , sobra
decir q el campo fecha existe en la tabla en cuestion.

Lo bueno de todo esto, es q en otros procedimientos


funciona
correctamente...

otra solucion es hacerlo todo con comillas simples:

@sql = @sql + ' Fecha >= ''' + cast(@fechainicio as


varchar(20)) + '''

asi funciona correctamente, pero no entiendo como de la


otra forma no me
deja...

Otra solucion muy curiosa, es q reiniciando mi ordenador,


vuelvo a acceder
al procedimiento compruebo sintaxis y luego aplico y está


todo perfecto

alguien lo entiende, pq yo no!


"Javier Loria" escribió en el mensaje
news:%
Hola:
Cuando escoges la opcion de "comprobacion de




sintaxis" solo se hace
esto, comprueba que no cometes algun error de SINTAXIS,




y no revisa los
nombres de los objetos (Tablas, Columnas, etc). Prueba




hacer esto:
=>>> SELECT *
FROM TablaNoExiste
=>>> Y si haces un Parse veras que efectivamente da que




la Sintaxis es
correcta pero si lo ejecutas como la tabla no existe




dara error.
Este es el comportamiento deseado. Debes revisas




los nombres de las
columnas y de las tablas en tu consulta.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.


Manuel escribio:
> Hola gente!
>
> tengo el siguiente problema y no tengo ni idea de




como solucionarlo,
> haber si me explico:
>
> Cuando estoy haciendo un procedimiento almacenado y




pulso "Comprobar
> la sintaxis" me responde: "comprobacion de sintacxis




correcta"
> pero... cuando a continuacion pulso el boton de




Aceptar, me dice:
> Error 207. El nombre de colmna 'T.Fecha BETWEEN" no




es valido.
>
> Alguna idea????
>
> Mil gracias por su atención
> Saludos






.





.

Respuesta Responder a este mensaje
#7 ulises
03/03/2004 - 19:36 | Informe spam
En ese caso no se ha ejecutado el SET porque se encuentra
dentro del sp, prueba realizando el SET antes del CREATE,
de esta forma :

SET QUOTED_IDENTIFIER OFF
go
CREATE PROC nombreprocedimiento
AS
.

adicionalmente, lee la información de SET ANSI_DEFAULTS en
el BOL, hay algunas ocasiones en que no debes cambiarlo
p.e. cuando usas vistas indexadas o indices sobre columnas
calculadas.

Saludos,
Ulises

Ulises,
eso probado en el analizador de consulta funciona... pero


cuando lo pongo en
un procedimiento almacenado, me sigue dando el mismo


error cuando pulso el
boton de aplicar.



"ulises" escribió en el


mensaje
news:66ca01c40128$253079b0$
Hum, creo que coloque ON cuando debería decir OFF, crea
una tabla :

CREATE table tempo ( fecha datetime )

y luego prueba lo siguiente :

SET QUOTED_IDENTIFIER ON
declare @sql varchar(70)
SET @sql = "SELECT * FROM tempo WHERE "
SET @sql = @sql + " fecha >= '20030401'"
EXEC(@sql)

te debería dar el siguiente error :

Server: Msg 207, Level 16, State 3, Line 3
Invalid column name 'SELECT * FROM tempo WHERE '.
Server: Msg 207, Level 16, State 1, Line 4
Invalid column name ' fecha >= '20030401''.

en cambio si lo colocas en OFF

SET QUOTED_IDENTIFIER OFF
declare @sql varchar(70)
SET @sql = "SELECT * FROM tempo WHERE "
SET @sql = @sql + " fecha >= '20030401'"
EXEC(@sql)


te debe retornar :

fecha

Saludos,
Ulises


esa solucion no ve vale... si entro dentro de mi


procedimiento almacenado y
pongo lo que me dices me sigue saliendo el mismo error


cuando doy al boton
de aplicar... tambien lo he ejectuado en el analizador de


consultas y luego
he intentado cambiar el procedimiento y sigue dando


error...

Mil gracias Ulises



"ulises" escribió en el


mensaje
news:61e101c40122$3514d4d0$
En el BOL revisa el tema de SET QUOTED_IDENTIFIER, cuando
este parametro se encuentra en ON te permitirá lo que
pides.

Saludos,
Ulises

Hola y gracias por responder...

la cuestion es q está igual que otros procedimientos y


funciona
correctamente...
el problema que yo veo es q no entiende bien el tema de


las comillas simples
y comillas dobles. Yo quiero concatenar la fecha que me


pasan como
paramentro de entrada (y q es opcional ademas de otros


muchos parametros) a
una select, la fecha debe ir entre comillas simples para


poderla ejecutar la
sentencia, entonces:

@sql = @sql + " Fecha >= '" + cast(@FechaInicio as




varchar
(20)) + "'"
(@sql es la variable q contien la sentencia select a


ejecutar)

con esta sintaxis me dice que no encuentra el


campo "Fecha >= ' , sobra
decir q el campo fecha existe en la tabla en cuestion.

Lo bueno de todo esto, es q en otros procedimientos


funciona
correctamente...

otra solucion es hacerlo todo con comillas simples:

@sql = @sql + ' Fecha >= ''' + cast(@fechainicio as


varchar(20)) + '''

asi funciona correctamente, pero no entiendo como de la


otra forma no me
deja...

Otra solucion muy curiosa, es q reiniciando mi






ordenador,
vuelvo a acceder
al procedimiento compruebo sintaxis y luego aplico y






está
todo perfecto

alguien lo entiende, pq yo no!


"Javier Loria" escribió en el






mensaje
news:%
Hola:
Cuando escoges la opcion de "comprobacion de




sintaxis" solo se hace
esto, comprueba que no cometes algun error de








SINTAXIS,
y no revisa los
nombres de los objetos (Tablas, Columnas, etc). Prueba




hacer esto:
=>>>> SELECT *
FROM TablaNoExiste
=>>>> Y si haces un Parse veras que efectivamente da que




la Sintaxis es
correcta pero si lo ejecutas como la tabla no existe




dara error.
Este es el comportamiento deseado. Debes revisas




los nombres de las
columnas y de las tablas en tu consulta.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.


Manuel escribio:
> Hola gente!
>
> tengo el siguiente problema y no tengo ni idea de




como solucionarlo,
> haber si me explico:
>
> Cuando estoy haciendo un procedimiento almacenado y




pulso "Comprobar
> la sintaxis" me responde: "comprobacion de sintacxis




correcta"
> pero... cuando a continuacion pulso el boton de




Aceptar, me dice:
> Error 207. El nombre de colmna 'T.Fecha BETWEEN" no




es valido.
>
> Alguna idea????
>
> Mil gracias por su atención
> Saludos






.





.





.

Respuesta Responder a este mensaje
#8 Manuel
04/03/2004 - 09:19 | Informe spam
Muchas gracias Ulises, mano de santo

Gracias, tambien, al resto de compañeros por sus aportaciones


"ulises" escribió en el mensaje
news:69b101c4014e$80463c60$
En ese caso no se ha ejecutado el SET porque se encuentra
dentro del sp, prueba realizando el SET antes del CREATE,
de esta forma :

SET QUOTED_IDENTIFIER OFF
go
CREATE PROC nombreprocedimiento
AS
.

adicionalmente, lee la información de SET ANSI_DEFAULTS en
el BOL, hay algunas ocasiones en que no debes cambiarlo
p.e. cuando usas vistas indexadas o indices sobre columnas
calculadas.

Saludos,
Ulises

Ulises,
eso probado en el analizador de consulta funciona... pero


cuando lo pongo en
un procedimiento almacenado, me sigue dando el mismo


error cuando pulso el
boton de aplicar.



"ulises" escribió en el


mensaje
news:66ca01c40128$253079b0$
Hum, creo que coloque ON cuando debería decir OFF, crea
una tabla :

CREATE table tempo ( fecha datetime )

y luego prueba lo siguiente :

SET QUOTED_IDENTIFIER ON
declare @sql varchar(70)
SET @sql = "SELECT * FROM tempo WHERE "
SET @sql = @sql + " fecha >= '20030401'"
EXEC(@sql)

te debería dar el siguiente error :

Server: Msg 207, Level 16, State 3, Line 3
Invalid column name 'SELECT * FROM tempo WHERE '.
Server: Msg 207, Level 16, State 1, Line 4
Invalid column name ' fecha >= '20030401''.

en cambio si lo colocas en OFF

SET QUOTED_IDENTIFIER OFF
declare @sql varchar(70)
SET @sql = "SELECT * FROM tempo WHERE "
SET @sql = @sql + " fecha >= '20030401'"
EXEC(@sql)


te debe retornar :

fecha

Saludos,
Ulises


esa solucion no ve vale... si entro dentro de mi


procedimiento almacenado y
pongo lo que me dices me sigue saliendo el mismo error


cuando doy al boton
de aplicar... tambien lo he ejectuado en el analizador de


consultas y luego
he intentado cambiar el procedimiento y sigue dando


error...

Mil gracias Ulises



"ulises" escribió en el


mensaje
news:61e101c40122$3514d4d0$
En el BOL revisa el tema de SET QUOTED_IDENTIFIER, cuando
este parametro se encuentra en ON te permitirá lo que
pides.

Saludos,
Ulises

Hola y gracias por responder...

la cuestion es q está igual que otros procedimientos y


funciona
correctamente...
el problema que yo veo es q no entiende bien el tema de


las comillas simples
y comillas dobles. Yo quiero concatenar la fecha que me


pasan como
paramentro de entrada (y q es opcional ademas de otros


muchos parametros) a
una select, la fecha debe ir entre comillas simples para


poderla ejecutar la
sentencia, entonces:

@sql = @sql + " Fecha >= '" + cast(@FechaInicio as




varchar
(20)) + "'"
(@sql es la variable q contien la sentencia select a


ejecutar)

con esta sintaxis me dice que no encuentra el


campo "Fecha >= ' , sobra
decir q el campo fecha existe en la tabla en cuestion.

Lo bueno de todo esto, es q en otros procedimientos


funciona
correctamente...

otra solucion es hacerlo todo con comillas simples:

@sql = @sql + ' Fecha >= ''' + cast(@fechainicio as


varchar(20)) + '''

asi funciona correctamente, pero no entiendo como de la


otra forma no me
deja...

Otra solucion muy curiosa, es q reiniciando mi






ordenador,
vuelvo a acceder
al procedimiento compruebo sintaxis y luego aplico y






está
todo perfecto

alguien lo entiende, pq yo no!


"Javier Loria" escribió en el






mensaje
news:%
Hola:
Cuando escoges la opcion de "comprobacion de




sintaxis" solo se hace
esto, comprueba que no cometes algun error de








SINTAXIS,
y no revisa los
nombres de los objetos (Tablas, Columnas, etc). Prueba




hacer esto:
=>>>> SELECT *
FROM TablaNoExiste
=>>>> Y si haces un Parse veras que efectivamente da que




la Sintaxis es
correcta pero si lo ejecutas como la tabla no existe




dara error.
Este es el comportamiento deseado. Debes revisas




los nombres de las
columnas y de las tablas en tu consulta.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.


Manuel escribio:
> Hola gente!
>
> tengo el siguiente problema y no tengo ni idea de




como solucionarlo,
> haber si me explico:
>
> Cuando estoy haciendo un procedimiento almacenado y




pulso "Comprobar
> la sintaxis" me responde: "comprobacion de sintacxis




correcta"
> pero... cuando a continuacion pulso el boton de




Aceptar, me dice:
> Error 207. El nombre de colmna 'T.Fecha BETWEEN" no




es valido.
>
> Alguna idea????
>
> Mil gracias por su atención
> Saludos






.





.





.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida