通过Array将Oracle行结果传递给C函数进行计算

时间:2016-07-22 15:37:46

标签: c oracle oracle11g

我想在共享的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";

0 个答案:

没有答案