FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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)
__________________
El malabarista. |
#2
|
||||
|
||||
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, GroupName CHAR(30), FileExtensions CHAR(150) ) AS DECLARE VARIABLE lvIdFileGroup INTEGER; BEGIN SELECT IdFileGroup FROM GrupoArchivosBinarios WHERE IdFileGroup=:IdFileGroup INTO :lvIdFileGroup; IF (lvIdFileGroup IS NULL) THEN BEGIN INSERT INTO GrupoArchivos (IdFileGroup, ParentIdFileGroup, GroupName, FileExtensions) VALUES (:IdFileGroup, :ParentIdFileGroup, :GroupName, :FileExtensions); INSERT INTO GrupoArchivosBinarios (IdFileGroup) VALUES (:IdFileGroup); END ELSE BEGIN END END
__________________
Progress Openedge https://abevoelker.com/progress_open...dered_harmful/ Delphi forever... |
#3
|
||||
|
||||
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?
__________________
El malabarista. |
#4
|
|||
|
|||
Que Dialecto SQL estás usando en tu base de datos?
|
#5
|
||||
|
||||
Nota que en el codigo de conexion pongo 'SQLDialect=3'
__________________
El malabarista. |
#6
|
||||
|
||||
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. Dynamic SQL Error. SQL error code = -84. procedure GRUPOARCHIVOSBINARIOS does not return any values. At line 5, column 52.
me marca el error Código:
Undefined name. Dynamic SQL Error. SQL error code = -204. Table unknown. GrupoArchivosBinarios. At line 5, column 54. 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 |
#7
|
|||
|
|||
Cita:
Sobre lo que comenta román... El error que da: Código:
non-SQL security class defined. Dynamic SQL Error. SQL error code = -84. procedure GRUPOARCHIVOSBINARIOS does not return any values. At line 5, column 52. La forma correcta de ejecutar al procedimiento sería:
Pruebalo así y nos dices... |
#8
|
||||
|
||||
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...
__________________
El malabarista. |
#9
|
|||
|
|||
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... Última edición por maeyanes fecha: 19-11-2004 a las 21:33:36. |
#10
|
||||
|
||||
Cita:
// Saludos |
#11
|
||||
|
||||
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!
__________________
El malabarista. |
|
|
|