Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-12-2007
Gonbamon Gonbamon is offline
Registrado
 
Registrado: dic 2007
Posts: 5
Poder: 0
Gonbamon Va por buen camino
Problema con SUBSTRING

Hola.
Soy nuevo en el foro y después de revisar los hilos no he encontrado solución a mi problema:

Uso Firebird 2.0 con SQL Manager 2005 (IBManager).
Tengo un problema con la función SUBSTRING, si la uso en una SELECT normal:

Código SQL [-]
 
SELECT
HHDOCUMENT.HDCDATEEND,
SUBSTRING(HHDOCUMENT.HDCDATEEND FROM 1 FOR 4)
FROM
HHDOCUMENT

el resultado es correcto. Sin embargo, en cuento intento usar SUBSTRING en una select dentro de un procedimiento almacenado:
Código SQL [-]
  
CREATE PROCEDURE FINANCES(
  CMYCODE_IN VARCHAR(20) CHARACTER SET NONE)
RETURNS(
  HDCDATEEND VARCHAR(20) CHARACTER SET NONE,
  HDCDATEEND2 VARCHAR(20) CHARACTER SET NONE)
AS
BEGIN
        FOR
           SELECT
                 HHDOCUMENT.HDCDATEEND,
                 SUBSTRING(HHDOCUMENT.HDCDATEEND FROM 1 FOR 4)
           FROM
                 HHDOCUMENT
           WHERE
                 HHDOCUMENT.CMYCODE = :CMYCODE_IN
           
            INTO :
                 HDCDATEEND,
                 HDCDATEEND2
        DO
        SUSPEND;
        
END

Me da error de sintaxis:

Precompiler Error: Syntax error - FROM.


¿Cúal es el problema?

Gracias de antemano.

Saludos.

Última edición por Gonbamon fecha: 13-12-2007 a las 17:33:04. Razón: Etiquetas SQL
Responder Con Cita
  #2  
Antiguo 13-12-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
No encuentro ninguna complicación, acabo de copiar tu codigo y sin cambiar la "estructura" del mismo (Solo los nombres de las tablas y campos) he obtenido un resultado satisfactorio, la diferencia es que estoy usando FireBird 2.1, ¿Te sucede lo mismo si te actualizas a FireBird 2.0.3?, aunque sinceramente en FireBird 1.5 funcionan bien este tipo de cosas.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #3  
Antiguo 17-12-2007
Gonbamon Gonbamon is offline
Registrado
 
Registrado: dic 2007
Posts: 5
Poder: 0
Gonbamon Va por buen camino
Cita:
Empezado por jhonny Ver Mensaje
No encuentro ninguna complicación, acabo de copiar tu codigo y sin cambiar la "estructura" del mismo (Solo los nombres de las tablas y campos) he obtenido un resultado satisfactorio, la diferencia es que estoy usando FireBird 2.1, ¿Te sucede lo mismo si te actualizas a FireBird 2.0.3?, aunque sinceramente en FireBird 1.5 funcionan bien este tipo de cosas.

Gracias por contestar.
¿Qué editor sql usas?
He descubierto que el problema me lo esta dando el IBManager 2005, cuando creo el proc mediante la consola (isql) no me da problemas. Incluso uno vez creado el proc con SUBSTRING lo ejecuto a través del IBManager y 0 problemas, eso sí, si intento editarlo ya me devuelve el mencionado error.
Transcribo el error devuelto por el IBManager mediante msgbox:

"There is an error in input of field 'Procedure body'."


Saludos.
Responder Con Cita
  #4  
Antiguo 17-12-2007
Tal Tal is offline
Miembro
 
Registrado: dic 2007
Posts: 52
Poder: 17
Tal Va por buen camino
Buenas.
Yo uso el IBExpert que es "gratuito" pero yo ya lo estoy pagando.
Yo lo que veo raro es que los Into :... solo hay una variable con : la otra no tiene dos puntos y eso a mi me suele dar error

Código SQL [-]
  
CREATE PROCEDURE FINANCES(
  CMYCODE_IN VARCHAR(20) CHARACTER SET NONE)
RETURNS(
  HDCDATEEND VARCHAR(20) CHARACTER SET NONE,
  HDCDATEEND2 VARCHAR(20) CHARACTER SET NONE)
AS
BEGIN
        FOR
           SELECT
                 HHDOCUMENT.HDCDATEEND,
                 SUBSTRING(HHDOCUMENT.HDCDATEEND FROM 1 FOR 4)
           FROM
                 HHDOCUMENT
           WHERE
                 HHDOCUMENT.CMYCODE = :CMYCODE_IN
           
            
           --tu codigo              
           --INTO :HDCDATEEND,
           --      HDCDATEEND2
           --como lo pondría yo
           INTO :HDCDATEEND,
                :HDCDATEEND2


        DO
        SUSPEND;
        
END

Mira a ver si es por eso.

Un saludo, espero haberte ayudado.
Responder Con Cita
  #5  
Antiguo 17-12-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Yo tambien utilizo el IBExpert, pero aunque te mencione que no tuve problema con el Script y te funciona con el isql, deberias tener en cuenta la recomendación de Tal ya que es muy acertada su observación .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #6  
Antiguo 17-12-2007
Gonbamon Gonbamon is offline
Registrado
 
Registrado: dic 2007
Posts: 5
Poder: 0
Gonbamon Va por buen camino
Con el IBExpert se acabaron mis problemas. Lo de los dos puntos creo que es indiferente, me funciona de ambas maneras.

Muchas gracias.

Saludos.

Última edición por Gonbamon fecha: 17-12-2007 a las 18:53:43.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Utilizar Substring (2) idatejo SQL 0 27-12-2004 18:41:52
Substring en Queries idatejo SQL 0 24-12-2004 00:05:32
Substring seduerey Varios 1 21-05-2004 19:27:33
Substring En Interbase subzero Firebird e Interbase 2 30-01-2004 15:02:22
busqueda de substring wilson suarez SQL 2 19-05-2003 20:58:08


La franja horaria es GMT +2. Ahora son las 08:02:32.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi