Hola Marcela,
Hice una prueba para ver si podia llamar a una funcion y un procedure de otra base. Y se puede. Te paso un script mas abajo que lo hace usando 2 bases a y b y una funcion f y un procedure p.
( Tenes razon, a los procedures es posible llamarlos desde el SELECT, pero el uso de ciertas instrucciones en el procedure estan restringidas (por ej uso de transacciones) y te pueden hacer fallar el select. )
saludos
Ignacio
dbaccess sysutils <<EOF
create database a with log;
create database b with log;
EOF
dbaccess a <<EOF
drop table sumandos;
create table sumandos (s1 int, s2 int);
insert into sumandos values (100,200);
insert into sumandos values (1,2);
insert into sumandos values (5,1000);
EOF
dbaccess b <<EOF
drop function f;
create function f(a int, b int) returning int;
define c integer;
let c = a + b;
return c;
end function;
drop procedure p;
create procedure p(a int, b int) returning int;
define c integer;
let c = a + b;
return c;
end procedure;
drop procedure p2;
create procedure p2(a int, b int) returning int;
define c integer;
begin work;
let c = a + b;
commit;
return c;
end procedure;
EOF
dbaccess a <<EOF
select s1, s2, b:f(s1,s2) from sumandos;
select s1, s2, b:p(s1,s2) from sumandos;
select s1, s2, b:p2(s1,s2) from sumandos; – Da error porque usa transacciones
EOF
----- resultados --------
s1 s2 (expression)
100 200 300
1 2 3
5 1000 1005
3 row(s) retrieved.
s1 s2 (expression)
100 200 300
1 2 3
5 1000 1005
3 row(s) retrieved.
s1 s2 (expression)
675: Illegal SQL statement in SPL routine.
Error in line 1
Near character position 39