如何从PL/SQL调用C函数
我有一个编译的C程序,其中包括多个函数。我想从PL/SQL调用该C程序中的函数。以下是我所做的: 将编译后的C程序作为Oracle库加载(编译后的C程序复制到$Oracle_HOME/bin/:如何从PL/SQL调用C函数,c,oracle,plsql,C,Oracle,Plsql,我有一个编译的C程序,其中包括多个函数。我想从PL/SQL调用该C程序中的函数。以下是我所做的: 将编译后的C程序作为Oracle库加载(编译后的C程序复制到$Oracle_HOME/bin/: create or replace library startoo_lib as '/apps/oracle/product/19.3/dbhome_1/bin/ooffice.so'; 创建调用库/C程序的函数,C程序中的函数定义为bool oo_启动(字符串strHost,int port
create or replace library startoo_lib
as '/apps/oracle/product/19.3/dbhome_1/bin/ooffice.so';
创建调用库/C程序的函数,C程序中的函数定义为bool oo_启动(字符串strHost,int port,bool bVisible)
从sqlplus调用函数:
SQL> select oo_startup(shemp,8110) from dual;
select oo_startup(shemp,8110) from dual
*
ERROR at line 1:
ORA-00904: "SHEMP": invalid identifier
SQL> select oo_startup('shemp',8110) from dual;
select oo_startup('shemp',8110) from dual
*
ERROR at line 1:
ORA-00902: invalid datatype
我不确定我做得有什么不对,而且我对PL/SQL非常陌生。任何提示都会很感激。选择列表项不能返回布尔数据类型。但是,您可以在PL/SQL块中使用它们。让您的函数返回varchar2,应该可以。类似于“Y”或“N”的内容可以实现。您当然可以按照外部库。假设您正在处理Oracle的最新版本,但是,我认为大多数人会尝试使用
dbms\u调度程序
包的功能来运行外部可执行文件,而不是尽可能使用外部库。当然,您可能仍然希望它成为外部库,但如果您没有研究过可执行作业,那么这可能是一种更简单的方法。
SQL> select oo_startup(shemp,8110) from dual;
select oo_startup(shemp,8110) from dual
*
ERROR at line 1:
ORA-00904: "SHEMP": invalid identifier
SQL> select oo_startup('shemp',8110) from dual;
select oo_startup('shemp',8110) from dual
*
ERROR at line 1:
ORA-00902: invalid datatype