我想在共享的C编译程序中执行行结果的计算。
我想做类似的事情:
select myfunction( select col1 from table1 ) from dual;
实际上我只能这样做:
select myfunction(4,5,6) from dual;
我有一张这样的表:
create table table1 (col1 float);
insert into table1 values (4);
insert into table1 values (5);
insert into table1 values (6);
我的C程序(编译:gcc -shared -o $ ORACLE_HOME / lib / exec_docalc.so exec_docalc.c)
#include <stdio.h>
int exec_docalc ( int p1 , int p2, int p3 )
{
int result;
result = p1 + p2 + p3;
return result;
}
SQL:
CREATE OR REPLACE LIBRARY docalcLIB UNTRUSTED
AS '/u01/app/oracle/product/11.2.0/dbhome_2/lib/exec_docalc.so';
CREATE OR REPLACE FUNCTION myfunction
(P1 BINARY_INTEGER, P2 BINARY_INTEGER, P3 BINARY_INTEGER)
RETURN BINARY_INTEGER
AS LANGUAGE C
LIBRARY docalcLIB
NAME "exec_docalc";