PDA

Ver la Versión Completa : Ayuda con Execute Block


jars
05-11-2014, 18:45:53
Hola amigos, tengo este problema:
Cuando ejecuto el siguiente codigo con las variables hardcoded funciona bien, ahora cuando quiero reemplazarlas por variables, no encuentro la forma de hacerlo bien porque siempre me devuelve error.
Lo que estoy intentando es ejecutar una stored procedure que esta en otra BBDD.


execute block returns (o_rac integer)
as
declare variable p_datefrom varchar(8);
declare variable p_dateto varchar(8);
declare variable o_timef varchar(5);
declare variable o_timet varchar(5);
declare variable p_hostip varchar(15);
begin
p_datefrom = '20141017';
p_dateto = '20141017';
o_timef = '11:00';
o_timet = '12:00';
p_hostip = '192.168.x.x';
for execute statement
'select o_rac from sp_calculate_rac(:p_datefrom, :p_dateto, :o_timef, :o_timet)'
on external data source :p_hostip||':stats' as user 'SYSDBA' password 'masterkey' into :o_rac do suspend;
end;


Me pueden dar una mano?
Gracias

duilioisola
05-11-2014, 19:02:50
Solo te podremos echar una mano si nos dices cual es el error. (El mensaje exacto que te devuelve esta operación)
Tampoco nos informas de la base de datos que estás utilizando... ¿MySQL quizás? ¿Firebird? ¿MSSQL Server?

He dado formato al SQL que has puesto. ¿Es este?

execute block returns (o_rac integer)
as
declare variable p_datefrom varchar(8);
declare variable p_dateto varchar(8);
declare variable o_timef varchar(5);
declare variable o_timet varchar(5);
declare variable p_hostip varchar(15);
begin
p_datefrom = '20141017';
p_dateto = '20141017';
o_timef = '11:00';
o_timet = '12:00';
p_hostip = '192.168.x.x';

for execute statement 'select o_rac from sp_calculate_rac(:p_datefrom, :p_dateto, :p_timef, :p_timet)'
on external data source p__hostip||':stats'
as user 'SYSDBA'
password 'masterkey'
into :p_rac
do
suspend;
end;


Yo supongo que la parte donde formas el STATEMENT debes reemplazar las variables convirtiéndolas a "strings".


/* Deberia quedar 'select o_rac from sp_calculate_rac( '20141017' , '20141017' , '11:00' , '12:00' )' */
for execute statement 'select o_rac from sp_calculate_rac( '''||:p_datefrom||''' , ''' || :p_dateto || ''' , ''' || :p_timef || ''' , '''|| :p_timet || ''' )'

jars
05-11-2014, 19:14:01
Gracias duilioosola.
El motor es firebird 2.5 y si, tenía que convertirlas a string, ahora funcioan bien.

Gracias nuevamente.