![]() |
Al creo SP, error con caracter "
Tengo un codigo en Sql, que estoy generando automaticamente (un requisito para mi aplicacion de logging), que corre bien en IB Expert y no por dbExpress.
Llevo ya 3 dias llendo de aqui para alla y nada... El error que saca es "Token Unknow - Line 5 char 82 ?", que segun mis cuentas es esta linea: SELECT "IdFileGroup" FROM "GrupoArchivosBinarios" WHERE "IdFileGroup"=:"IdFileGroup" INTO :lvIdFileGroup; Uso D7, dbExpert, Firebird 1.5 con la opcion de embebed engine, configurada la conexion asi:
El codigo que ejecuto es exactamente:
Para crear la tabla corro este codigo (sin problemas, lo pongo para poder reproducir)
|
Hola,
¿Por qué pones tantas comillas?, no es necesario que pongas todos los campos entre comillas Esta línea debería funcionar: Código:
CREATE PROCEDURE GrupoArchivosBinarios (IdFileGroup INTEGER, ParentIdFileGroup INTEGER, |
Ponga las comillas porque en IBExpert saca errores por todos lados sino lo hago.
Probe ejecutando directamente el codigo en IBExpert y con Delphi y en ninguno funciona. En Delphi dice: Token Unknow, Line 9 char 8 ? En IBExpert: non-SQL security class defined. Dynamic SQL Error. SQL error code = -84. procedure GRUPOARCHIVOSBINARIOS does not return any values. At line 8, column 3. Ahora esto si que me preocupa. Que la misma consulta tenga resultados diferentes con errores diferentes me va a dificultar bastante el desarrollo. Veo que tratan los caracteres diferentes (por ejemplo, en iBExpert OBLIGATORIAMENTE toca rodear de comillas los campos, poner el Select en una linea y otros cambios.. o sea como lo pase inicialmente.) Ahora, necesito mas bien es saber como obtener iguales errores y resultados... que debo hacer? |
Que Dialecto SQL estás usando en tu base de datos?
|
Nota que en el codigo de conexion pongo 'SQLDialect=3'
|
Hola mamcx,
no es que esto vaya a ser de gran ayuda pero me extraña esto de que el IBExpert te marca errores si no usas las comillas. Usando igualmente FireBird 1.5, Dialect 3, acabo de copiar y pegar tus códigos SQL, quitando las comillas y funciona casi bien. El "casi" significa: La tabla, el generador y el disparador me los crea sin problemas. El procedimiento, quitando las comillas marca el error: Código:
non-SQL security class defined.
me marca el error Código:
Undefined name.Curiosamente, si creo una tabla con ese nombre, y entrecomillo únicamente el nombre del procedimiento, entonces ya no marca ningún error y crea el procedimiento. Así pues, ¿no será esto una confusión entre el nombre de un procedimiento y el nombre de una tabla? // Saludos |
Cita:
Sobre lo que comenta román... El error que da: Código:
non-SQL security class defined.La forma correcta de ejecutar al procedimiento sería:
Pruebalo así y nos dices... |
Pero es que aun NO esta creado el SP! Apenas estoy corriendo la creacion.... Obviamente lo del Select se entiende, de ahi que uso la clausula INTO para que me guarde el valor... Lo que intento es saber si el registro existe y si no lo creo, de lo contrario lo actualizo...
Roman, esos son los exactos errores que me saca a mi, razon de las comillas, pero no hay otra tabla. Ahora me preocupa no obtener iguales resultados... acaso hay algun parametro o configuracion que se me pasa por alto? Porque en unos no pasa nada con comillas y en el otro si? Voy a probar cambiando el nombre del SP haber si asi... Gracias por la ayuda... |
Ya vi donde está tu error... estas haciendo un query sobre una tabla que no existe... Puesto que usas el nombre del procedimiento...
ya que tienes:
UPDATE: Lo que estás haciendo es tratar de llamar al mismo procedimiento de forma recursiva, es por eso el error es que el procedimiento no devuelve resultados. En otro caso te hubiera dado un error de que la tabla no existe. Saludos... |
Cita:
// Saludos |
Ya resolvi el problema.. o problemas.
Primero, hay que desactivar ParamsChecks en el query. Luego, agrege "sp" a los nombres de los procedimientos para que no se confundieran con las tablas (todas estaban creadas ya). Luego la limpieza de los ". Gracias a todos por la ayuda! |
| La franja horaria es GMT +2. Ahora son las 21:53:01. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi