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)
-   -   select a execute block (https://www.clubdelphi.com/foros/showthread.php?t=61500)

hecospina 10-11-2008 17:12:50

select a execute block
 
Buenos dias amigos del foro

Utilizo Firebird 2.0
Tengo una inmenza duda

Tengo una limitante para compilar procedimientos almacenados en mi base de datos.

He estado estudiando sobre execute block, el cual puedo utilizar sin problemas para realizar consultas y actualizaciones como si fuera un procedimiento, sin la necesidad de compilarlo

Es posible realizar un select a esta sentencia execute block?

Gracias de antemano por el tiempo que dedican a leer esta consulta :)

jhonny 10-11-2008 17:34:19

Que casualidad...

Hace poco me hice la misma pregunta y logre obtener algo, haciendo exactamente lo mismo que se hace con procedimieto almacenado para obtener valores... con un TIBDataSet, coloque mi bloque de ejecución dentro de la propiedad Select SQL y luego lo ejecuté, como dentro de este tipo de codigo normalmente uno utiliza los dos puntos antes del nombre de un parametro ya sea de salida, de entrada o una variable, entonces me mostró un error... para ser mas exactos el siguiente:

Cita:

---------------------------
Project1
---------------------------
Dynamic SQL Error

SQL error code = -104

Token unknown - line 9, column 10

?.
---------------------------
Aceptar
---------------------------
Claro, por culpa de esos : obtenia un error muy simple, pero bastante normal, ya que dicho TDataSet "creia" que yo lo que queria era pasar parametros al TDataset y no utilizar los parametros propios del "bloque de ejecución", pero la solución fue muy sencilla, bastó con poner la propiedad ParamCheck del TIBDataSet en False y listo... obtuve en mi DBGrid los resultados deseados :).

Espero te sirva :).

boreg 10-11-2008 19:25:00

Creo que te refieres a hacer una consulta como si fuera un procedimiento almacenado:
Código SQL [-]
SELECT *
FROM EXECUTE BLOCK .....
WHERE ...
si es así, lamento decirte que POR EL MOMENTO no es posible como dicen aqui, donde tambien dicen que quizás hasta la version 3.1 o despues se pueda implementar,
Cita:

Re: [Firebird-devel] select from (execute block)
From: Alex Peshkov <peshkoff@ya...> - 2007-09-24 11:36
On Monday 24 September 2007 15:30, Fabiano Bonin wrote:
> Is it possible to implement this?
>
> select
> a.*
> from
> ( execute block
> returns (
> col1 integer )
> as
> begin
> ...
> suspend;
> end ) a
>
> Can i fill a ticket?

Yes, but not too soon.
Not earlier than 3.1.
checa la pagina por que creo que viene una solucion alterna, pero comentat que es para la version 2.1, no estoy muy seguro no tengo esa version para hacer la prueba.

Espero que esta info te haya sido de ayuda.

jhonny 10-11-2008 19:32:15

Ahhh, si, seguramente entendí mal el post.

boreg 10-11-2008 19:34:05

Cita:

Empezado por jhonny (Mensaje 325068)
Ahhh, si, seguramente entendí mal el post.

Puede ser, pero mejor que el amigo hecospina nos aclare.

Saludos

hecospina 10-11-2008 19:57:59

Boreg, efectivamente lo que preguntaba era eso, si se podia hacer y tu aclaracion es de gran ayuda
De todos modos la informacion que me da Jhony me es de mucha utilidad pues deseo consumir esta informacion desde FastReport, no he tenido tiempo de hacer las pruebas para ver si me funciona
Las hare y les cuento
Gracias

hecospina 10-11-2008 21:41:59

Hice las pruebas con fast report y no funciono, me sale error que corresponde a ":" que dijo Jhony, a pesar de colocar la propiedad

IBXQUERY1.PARAMS.PARAMCHECK=FALSE

Pensaba que me iba a funcionar
Muchas gracias

jhonny 10-11-2008 21:49:39

Bueno, estoy seguro que a mi me ha funcionado... pero con un TIBDataSet, no lo probé con un TIBQuery.

Código Delphi [-]
IBDataset1.PARAMCHECK=FALSE;


La franja horaria es GMT +2. Ahora son las 12:46:41.

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