Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Execute Statement (https://www.clubdelphi.com/foros/showthread.php?t=21414)

jwmoreira 17-05-2005 00:29:45

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.

Spynosa 17-05-2005 07:50:44

creo que te faltan los dos puntos

EXECUTE STATEMENT 'SELECT COUNT(*) FROM ' || :AV_TABLA INTO :LI_NUMREG;

jwmoreira 17-05-2005 15:40:49

Sale el mismo error

Saludos,
Jorge.

lbuelvas 17-05-2005 16:15:05

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.

Spynosa 17-05-2005 16:41:32

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

jwmoreira 17-05-2005 17:57:55

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.

Spynosa 18-05-2005 08:12:34

asegurate de que entre :AV_TABLA || y INTO

haya un espacio y no '' sino ' ' .

prueba a ver.

un saludo

jwmoreira 18-05-2005 16:05:57

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.

lbuelvas 19-05-2005 18:08:38

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.

jwmoreira 20-05-2005 01:07:02

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.

lbuelvas 20-05-2005 09:23:01

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.

jwmoreira 20-05-2005 18:17:50

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.

lbuelvas 22-05-2005 20:55:27

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.


La franja horaria es GMT +2. Ahora son las 06:54:54.

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