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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-02-2004
mosorio mosorio is offline
Miembro
 
Registrado: may 2003
Posts: 159
Poder: 22
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
 



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 15:33:21.


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