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 17-05-2005
Avatar de jwmoreira
jwmoreira jwmoreira is offline
Miembro
 
Registrado: jun 2004
Posts: 83
Poder: 20
jwmoreira Va por buen camino
Execute Statement

Hola,

Al querer probar éste código me da el siguiente error :
Código SQL [-]
CREATE PROCEDURE SP_REG_TABLA(
    AV_TABLA VARCHAR (50))
RETURNS (
    LI_NUMREG INTEGER)
AS
BEGIN
  EXECUTE STATEMENT 'SELECT COUNT(*) FROM ' || AV_TABLA INTO :LI_NUMREG;
  SUSPEND;
END
Error del precompilador: parsing error - into:

Que está mal, o que hace falta?

Saludos,
Jorge.
Responder Con Cita
  #2  
Antiguo 17-05-2005
Avatar de Spynosa
Spynosa Spynosa is offline
Miembro
 
Registrado: nov 2004
Ubicación: Ecija - Sevilla
Posts: 99
Poder: 20
Spynosa Va por buen camino
creo que te faltan los dos puntos

EXECUTE STATEMENT 'SELECT COUNT(*) FROM ' || :AV_TABLA INTO :LI_NUMREG;
Responder Con Cita
  #3  
Antiguo 17-05-2005
Avatar de jwmoreira
jwmoreira jwmoreira is offline
Miembro
 
Registrado: jun 2004
Posts: 83
Poder: 20
jwmoreira Va por buen camino
Sale el mismo error

Saludos,
Jorge.
Responder Con Cita
  #4  
Antiguo 17-05-2005
lbuelvas lbuelvas is offline
Miembro
 
Registrado: may 2003
Ubicación: Colombia
Posts: 377
Poder: 21
lbuelvas Va por buen camino
Hola foro,

El manejo de sql en tiempo de ejecucion dentro de procedimientos almacenados es una caracteristica propia de Firebird 1.5, no se si lo suspenden en Firebird 2.0.
__________________
Luis Fernando Buelvas T.
Responder Con Cita
  #5  
Antiguo 17-05-2005
Avatar de Spynosa
Spynosa Spynosa is offline
Miembro
 
Registrado: nov 2004
Ubicación: Ecija - Sevilla
Posts: 99
Poder: 20
Spynosa Va por buen camino
te paso un codigo que a mi me funciona perfectamente espero que saques de él la solución.


EXECUTE STATEMENT 'SELECT descripcion ' || ' FROM ' || :TABLA || ' where codigo = ' || :campo||' ' INTO :COD_INT;

posiblemente te funcione así

EXECUTE STATEMENT 'SELECT COUNT(*) FROM ' || :AV_TABLA || ' ' INTO :LI_NUMREG
Responder Con Cita
  #6  
Antiguo 17-05-2005
Avatar de jwmoreira
jwmoreira jwmoreira is offline
Miembro
 
Registrado: jun 2004
Posts: 83
Poder: 20
jwmoreira Va por buen camino
Lo he probado de varias forma y me da el mismo error, ya estoy loco, no se si de pronto es configuración me hace falta algo, uso firebird 1.51 con Linux.

Saludos,
Jorge.
Responder Con Cita
  #7  
Antiguo 18-05-2005
Avatar de Spynosa
Spynosa Spynosa is offline
Miembro
 
Registrado: nov 2004
Ubicación: Ecija - Sevilla
Posts: 99
Poder: 20
Spynosa Va por buen camino
asegurate de que entre :AV_TABLA || y INTO

haya un espacio y no '' sino ' ' .

prueba a ver.

un saludo
Responder Con Cita
  #8  
Antiguo 18-05-2005
Avatar de jwmoreira
jwmoreira jwmoreira is offline
Miembro
 
Registrado: jun 2004
Posts: 83
Poder: 20
jwmoreira Va por buen camino
Se supone que ésto debería funcionar:
Código:
execute statement 'select count(*) ' || ' from ' || :lv_tabla || ' ' into :li_val;
Pero nada el mismo error:

Error del precompilador: parsing error - into.

Saludos,
Jorge.
Responder Con Cita
  #9  
Antiguo 19-05-2005
lbuelvas lbuelvas is offline
Miembro
 
Registrado: may 2003
Ubicación: Colombia
Posts: 377
Poder: 21
lbuelvas Va por buen camino
Hola foro,

Este es el codigo que escribi exactamente en Firebird 1.5.2 y me funciona, pruebalo

Código SQL [-]
SET TERM ^ ;

CREATE PROCEDURE NEW_PROCEDURE (
    AV_TABLA VARCHAR(50))
RETURNS (
    LI_NUMREG INTEGER)
AS
BEGIN
  EXECUTE STATEMENT 'SELECT COUNT(*) FROM ' || :AV_TABLA INTO :LI_NUMREG;
  SUSPEND;
END
^

SET TERM ; ^

GRANT EXECUTE ON PROCEDURE NEW_PROCEDURE TO SYSDBA;

Aprovecho hacerte una pregunta, como hiciste para instalar Firebird 1.5 en Linux?, estoy tratando de instalar Firebird 1.5.2 en Red Hat 7.3, pero me pide que actualice unas librerias GCC, las baje pero relamente me esta quedando grande, gracias.
__________________
Luis Fernando Buelvas T.
Responder Con Cita
  #10  
Antiguo 20-05-2005
Avatar de jwmoreira
jwmoreira jwmoreira is offline
Miembro
 
Registrado: jun 2004
Posts: 83
Poder: 20
jwmoreira Va por buen camino
Hola,

Gracias por tu respuestas, tenía instalado la versión 1.5.1 y instale la 1.5.2 pero sigo manteniendo el mismo problema, que administrador estas usando ? yo tengo EMS.

Sobre tu pregunta, uso Red Hat 9 y no me dió ese tipo de problemas, solo lo baje, desempaquete e instale y ya, autommáticamente se levanta el servicio.

Saludos.
Responder Con Cita
  #11  
Antiguo 20-05-2005
lbuelvas lbuelvas is offline
Miembro
 
Registrado: may 2003
Ubicación: Colombia
Posts: 377
Poder: 21
lbuelvas Va por buen camino
Hola foro,

Estoy trabajando con IBExpert y con SQLHammer (http://metadataforge.com), Porque no miras (para IBExpert) la configuracion de la conexion la opciones 'Server Version' que quede en modo Firebird 1.5.

Pruebate hacer un backup/restore de la base de datos, a ver si de pronto.

Sobre el asunto Red Hat, gracias por tus comentarios, lo que pasa es que en Red Hat 7.3 no instala Firebird 1.5, se deja montar desde la version 8.0 en adelante, instale un Mandrake 10 y monte sin problemas Firebird.
__________________
Luis Fernando Buelvas T.
Responder Con Cita
  #12  
Antiguo 20-05-2005
Avatar de jwmoreira
jwmoreira jwmoreira is offline
Miembro
 
Registrado: jun 2004
Posts: 83
Poder: 20
jwmoreira Va por buen camino
Question

Gracias por tu ayuda.

Parece que es el interprete, he podido ejecutarlo con IBexpert, con Hammer al querer registrar el Host solo aparece para Interbase todas sus versiones y no se como hacerlo para Firebird.

Ahora parece que el EXECUTE STATEMENT tiene sus restricciones, yo queria darle el siguiente uso:

En modo comando mediante select podía ejecutar operaciones matematicas por ej:
En Oracle lo hacía asi:
Código SQL [-]
select 20*2 from dual;
En Firebird no he encontrado algo parecido a dual y sustitui por lo siguiente:
Código SQL [-]
select 20*2 from rdb$database
Como es una tabla de un solo registro (creo).

Bueno, la idea es poder armar una formula y poder ejecutar con el select, todo bien en modo comando, pero cuando la pongo con EXECUTE STATEMENT me da error al ejecutar el SP.

Esto de la formula lo pregunte anteriormente, pero nadie me supo decir a nivel de la base no del cliente, entonces empece a probar con el SELECT ya que en oracle si lo he hecho pero nada en Firebird, si me puedes dar alguna luz te lo agradecería un mundo tengo que solucionar esto lo mas pronto posible.

Saludos,
Jorge.
Responder Con Cita
  #13  
Antiguo 22-05-2005
lbuelvas lbuelvas is offline
Miembro
 
Registrado: may 2003
Ubicación: Colombia
Posts: 377
Poder: 21
lbuelvas Va por buen camino
Hola foro,

Código:
Parece que es el interprete, he podido ejecutarlo con IBexpert, con Hammer al querer registrar el Host solo aparece para Interbase todas sus versiones y no se como hacerlo para Firebird.
En SQLHammer Justo debajo de la opcion de menu File hay un botoncito con el logo de Interbase, pichate en ese boton y selecionate el logo de Firebird !

Lamento no poder ayudarte con lo de la formulacion tipo Oracle como comentabas, pero no he hecho algo asi.
__________________
Luis Fernando Buelvas T.
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


La franja horaria es GMT +2. Ahora son las 05:46:51.


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