Club Delphi  
    Paypal   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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-02-2004
mosorio mosorio is offline
Miembro
 
Registrado: may 2003
Posts: 159
Poder: 24
mosorio Va por buen camino
FireBird 1.5 RC8 y nuevas funcionalidades???

Hola,
Leyendo las nuevas funcionalidades de FB1.5 RC8, he intentado hacer unas pruebas pero nome funciona o al aprecer no lo he entendido.
En los ejemplos que colocan, se dice que se permite ejecutar una sentencia mediante una cadena. Es decir en un procedimiento almancenado o un trigger se puede ejecutar un "EXECUTE STATEMENT" y una cadena sql, pero al intentar hacerlo no lo hace, me da errores.
En el documento de la release traducido al español, dice:
Cita:
(1.5) EXECUTE STATEMENT
Alex Peshkov
Extensión PSQL que admite una cadena de caracteres la cual es una consulta DSQL (dynamic SQL) y la
ejecuta como si hubiera sido enviada a DSQL.
Disponible en triggers y procedimientos almacenados.
La sintaxis puede tener tres variantes.
Sintaxis 1
Ejecuta <cadena> como una operación SQL que no devuelve ningún registro, es decir INSERT, UPDATE,
DELETE, EXECUTE PROCEDURE o cualquier sentencia DDL excepto CREATE/DROP DATABASE.

EXECUTE STATEMENT <cadena>;

Ejemplo
CREATE PROCEDURE DynamicSampleOne (Pname VARCHAR(100))
AS
DECLARE VARIABLE Sql VARCHAR(1024);
DECLARE VARIABLE Par INT;
BEGIN
SELECT MIN(SomeField) FROM SomeTable INTO :Par;
Sql = ’EXECUTE PROCEDURE ’ || Pname || ’(’;
Sql = Sql || CAST(Par AS VARCHAR(20)) || ’)’;
EXECUTE STATEMENT Sql;
END
Osea que puedo ejecutar "cualquier" tipo de sentencia excepto crear o eliminar bases de datos.
Lo que intento hacer es:
Cita:
CREATE PROCEDURE GENERAR(GENERADOR VARCHAR(40))
RETURNS(IDVALOR INTEGER)
AS
BEGIN
EXECUTE STATEMENT 'GEN_ID(' || GENERADOR || ',1)' || INTO :IDVAL;
END;
En teoría esto debe funcionar, si hay algo herrado, por favor indicarmelo y si es un fallo o un bug que lo dudo también.
El error que da haciendo la prueba en IBExpert personal es que el token GEN_ID no existe.
El procedure lo permite crear sin problemas, pero la ejecución no da buenos resultados.

Gracias de antemano.
Responder Con Cita
 


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


La franja horaria es GMT +2. Ahora son las 23:38:47.


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