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 Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-01-2022
tiqui_loquito tiqui_loquito is offline
Miembro
 
Registrado: oct 2013
Posts: 56
Poder: 11
tiqui_loquito Va por buen camino
Problemas en procedimiento almacenado con DATEDIFF

Cuando realizo esta consulta en firebird:

Código SQL [-]
SELECT
   DATEDIFF(DAY FROM CURRENT_DATE TO CAST('1-1-2000' AS DATE))
FROM
   RDB$DATABASE

Se ejecuta muy bien; pero si deseo hacerlo dentro de un procedimiento almacenado, entonces me sale un error

Código SQL [-]
CREATE PROCEDURE EDAD_DIAS_Y_FECHA_TSH_NEONATAL
AS
BEGIN
SELECT
   DATEDIFF(DAY FROM CURRENT_DATE TO CAST('1-1-2000' AS DATE))
FROM
   RDB$DATABASE

END

El error es: Precompiler Error: Syntax error - DAY.

La verdad no se cual sea el error.

Agradezco su colaboración
Responder Con Cita
  #2  
Antiguo 05-01-2022
manelb manelb is offline
Miembro
 
Registrado: mar 2017
Posts: 280
Poder: 8
manelb Va por buen camino
Buenos días...

Con este cambio parece que funciona sin problemas.

Yo tengo una v2.1

Código SQL [-]
SET TERM ^ ;

CREATE OR ALTER PROCEDURE EDAD_DIAS_Y_FECHA_TSH_NEONATAL 
returns (
    dias integer)
as
BEGIN

SELECT
   DATEDIFF(DAY FROM CURRENT_DATE TO CAST('1-1-2000' AS DATE))
FROM
   RDB$DATABASE into :dias;

suspend;

END^

Saludos
Responder Con Cita
  #3  
Antiguo 05-01-2022
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.232
Poder: 20
ElKurgan Va camino a la fama
Thumbs up

Gracias por compartir la solución

Saludos
Responder Con Cita
  #4  
Antiguo 05-01-2022
tiqui_loquito tiqui_loquito is offline
Miembro
 
Registrado: oct 2013
Posts: 56
Poder: 11
tiqui_loquito Va por buen camino
Cita:
Empezado por manelb Ver Mensaje
Buenos días...

Con este cambio parece que funciona sin problemas.

Yo tengo una v2.1

Código SQL [-]
SET TERM ^ ;

CREATE OR ALTER PROCEDURE EDAD_DIAS_Y_FECHA_TSH_NEONATAL 
returns (
    dias integer)
as
BEGIN

SELECT
   DATEDIFF(DAY FROM CURRENT_DATE TO CAST('1-1-2000' AS DATE))
FROM
   RDB$DATABASE into :dias;

suspend;

END^

Saludos
Manelb gracias por la respuesta, pero aún se me presenta el problema: Precompiler Error: Syntax error - DAY.
Responder Con Cita
  #5  
Antiguo 05-01-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No tiene lógica ese error.
Copia y pega aquí el texto completo del mensaje de error.
¿Qué versión de firebird es?
¿Qué 'dialect' estás usando en la BD?
Responder Con Cita
  #6  
Antiguo 05-01-2022
tiqui_loquito tiqui_loquito is offline
Miembro
 
Registrado: oct 2013
Posts: 56
Poder: 11
tiqui_loquito Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
No tiene lógica ese error.
Copia y pega aquí el texto completo del mensaje de error.
¿Qué versión de firebird es?
¿Qué 'dialect' estás usando en la BD?
Si lanzo esta consulta:
Código SQL [-]
           SELECT FIRST(1) TBL_NORMA_4505.FECHA_TSH_NEONATAL,cast(DATEDIFF(DAY, CAST(fecha_nacimiento AS DATE),CAST(FECHA_TSH_NEONATAL AS DATE))AS INTEGER) EDADDIAS
           FROM TBL_NORMA_4505
           WHERE (TBL_NORMA_4505.FECHA_TSH_NEONATAL <> '1845-01-01') AND (TBL_NORMA_4505.FECHA_TSH_NEONATAL <> '1800-01-01')
           AND TBL_NORMA_4505.FECHA_REGISTRO BETWEEN :FECHA_INICIAL AND :FECHA_FINAL
           AND TBL_NORMA_4505.ID_PACIENTE=:ID_PACIENTE
           AND cast(DATEDIFF(DAY, CAST(FECHA_NACIMIENTO AS DATE),CAST(FECHA_TSH_NEONATAL AS DATE))AS INTEGER) BETWEEN 0 AND 3
           ORDER BY TBL_NORMA_4505.ID_NORMA_4505 DESC

Como resultado me trae:
FECHA_TSH_NEONATAL EDADDIAS
31/01/2020 3


Hasta ahí todo bien. Pero apenas agrego esa consulta en un procedimiento almacenado el error que me sale es exactamente: Precompiler Error: Syntax error - DAY.


Uso firebird 2.5

Dialect
MON$SQL_DIALECT
3
Imágenes Adjuntas
Tipo de Archivo: pdf Evidencia BD.pdf (206,4 KB, 7 visitas)

Última edición por Casimiro Notevi fecha: 05-01-2022 a las 23:14:08.
Responder Con Cita
  #7  
Antiguo 05-01-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Eso es el IBExpert?
Responder Con Cita
  #8  
Antiguo 05-01-2022
tiqui_loquito tiqui_loquito is offline
Miembro
 
Registrado: oct 2013
Posts: 56
Poder: 11
tiqui_loquito Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Eso es el IBExpert?
SQL Manager 2005 for Interbase and Firebird
Responder Con Cita
  #9  
Antiguo 06-01-2022
tiqui_loquito tiqui_loquito is offline
Miembro
 
Registrado: oct 2013
Posts: 56
Poder: 11
tiqui_loquito Va por buen camino
Como no encontré el posible error, lo que hice fue lo siguiente

Código SQL [-]
           SELECT FIRST(1) TBL_NORMA_4505.FECHA_TSH_NEONATAL,
           (TBL_NORMA_4505.FECHA_TSH_NEONATAL-TBL_NORMA_4505.fecha_nacimiento) as V_VALOR
           FROM TBL_NORMA_4505
           WHERE (TBL_NORMA_4505.FECHA_TSH_NEONATAL <> '1845-01-01') AND (TBL_NORMA_4505.FECHA_TSH_NEONATAL <> '1800-01-01')
           AND TBL_NORMA_4505.FECHA_REGISTRO BETWEEN :FECHA_INICIAL AND :FECHA_FINAL
           AND TBL_NORMA_4505.ID_PACIENTE=:ID_PACIENTE
           AND (TBL_NORMA_4505.FECHA_TSH_NEONATAL-TBL_NORMA_4505.fecha_nacimiento) BETWEEN 0 AND 3
           ORDER BY TBL_NORMA_4505.ID_NORMA_4505 DESC

Código SQL [-]
 (TBL_NORMA_4505.FECHA_TSH_NEONATAL-TBL_NORMA_4505.fecha_nacimiento)

Con esa línea pude hacer lo que quería

Si logro encontrar la respuesta a lo otros se las dejaré por aquí
Responder Con Cita
  #10  
Antiguo 07-01-2022
manelb manelb is offline
Miembro
 
Registrado: mar 2017
Posts: 280
Poder: 8
manelb Va por buen camino
Como te decía Casimiro, es muy raro ese error...

A mi se me olvidó comentar que también trabajo con IBExpert.

¿A ver si el problema va a ser del SQL Manager?

Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
problemas con decimales en procedimiento almacenado en mssql richy08 Conexión con bases de datos 0 26-10-2010 01:54:33
Problemas con Procedimiento Almacenado santi33a MS SQL Server 2 24-02-2007 20:11:34
Problemas Procedimiento almacenado istradlin Conexión con bases de datos 2 13-04-2005 19:28:56
problemas con cast en procedimiento almacenado santiago14 Firebird e Interbase 1 26-11-2004 22:24:26
Problemas con procedimiento almacenado rmnart Firebird e Interbase 2 09-07-2003 22:27:17


La franja horaria es GMT +2. Ahora son las 19:18:30.


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