Oralce PL/SQL 调用C

1.要把C写成扩展的形式 ex.c文件

int __declspec(dllexport) sum(int a,int b)
{
	return a+b;
}

2.把C代码编译成动态库(*.dll 或 *.so)

C:\>gcc -O  -shared -o ex.dll ex.c

3.把 ex.dll 拷贝到数据库的bin目录 D:\app\11.1.0\db_1\BIN\

D:\app\11.1.0\db_1为我的Oracle 安装目录

4.连接动态库,用SYS帐号登录系统(此处为演示,所以直接用SYS登录,其他普通帐号可能权限有问题)

create or replace library MYLIB as ‘D:\app\11.1.0\db_1\BIN\ex.dll‘;

create or replace
function my_sum(l_a in binary_integer,l_b in binary_integer) return binary_integer as
language C  name "sum" library MYLIB
parameters(l_a,l_b);

5.使用

select my_sum(120,2) from dual

 执行结果如下

MY_SUM(120,2)
----------------------
122

1 rows selected

时间: 2024-11-05 16:34:52

Oralce PL/SQL 调用C的相关文章

PL/SQL调用BIEE WebServices清理BI Server缓存

BIEE自身提供了几种缓存管理的方法,事件表或者是在物理层设置缓存的失效时间,又或者是调用SAPurgeAllCache()过程. 前两种方法都是被动的管理策略(事件表是定时轮询,失效时间是指定有效时长),比较低效:个人更中意主动的缓存管理策略.即一旦数据发生变化就主动清理缓存. 最佳的作法就是在etl结束的时候通过调用API完成缓存的清理,要实现这种方式就需要调用BI Server提供的缓存管理存储过程,BI Server提供如下缓存管理过程: SAPurgeCacheByQuery SAPu

Java,PL/SQL调用 ORACLE存储函数以及存储过程

1.1.1.?准备工作·?创建表? ? --- 创建测试用表 school? ?? ???CREATE TABLE school(? ?? ?? ?? ?ID number,? ?--学校id? ?? ?? ?? ?NAME VARCHAR2(30)? ? ---学校名? ?? ???);? ?? ???--- 添加数据? ?? ???INSERT into school values(1,'北京大学');? ?? ???INSERT into school values(2,'南京大学');?

【转】Oralce PL/SQL 堆栈信息追踪

总结如下: DBMS_UTILITY.FORMAT_CALL_STACK - 这是在Oracle7中引入的,DBMS_UTILITY.FORMAT_CALL_STACK这个内置函数返回一个格式化的字符串,它显示了执行调用堆栈:直至此函数的调用点处的所有过程或者函数的调用顺序.换句话说,这个函数回答了这个问题:"我是怎么来到这里的?" DBMS_UTILITY.FORMAT_ERROR_STACK - 这是在Oracle7中引入的,DBMS_UTILITY.FORMAT_ERROR_ST

PL/SQL 调用 JAVA代码

1.直接在 SQL Developer中写入代码 create or replace and compile java source named "HelloWorld"aspackage com.test; public class HelloWorld { public static String sayHello(String name){  return "hello::"+ name; }} 2.创建一个方法或包调用 JAVA (1).方法 create

PL/SQL学习礼记一 Bulk_Collect 调用方式集锦

事先申明,本文所有示例都皆源于<Expert PL SQL Practices>这本电子书的第六章.小陈觉得在学习PLSQL的过程中,将来或许会用到,在此笔记一番. 正文如下: 首先准备基础数据吧 HARDWARE 表. 表结构如图所示: 然后插入1,000,000条数据吧.这里不得不说,PLSQL里面,dual表的确帮助很大,当然T-SQL里面你也可以建一张辅助表的.这里用的Oracle SQL Developer自带的格式化功能,相当弱. INSERT INTO HARDWARE SELE

在PL/SQL中调用存储过程--oracle

在oracle10中写好了存储过程,代码如下: CREATE OR REPLACE Procedure Proc_Insert ( sName in varchar2, sAge in int, sExeTime in varchar2 ) is begin Insert into T_TEST(C_ID, C_NAME, C_AGE, C_INTIME, C_EXETIME) values(T_TEST_CID.nextval,sName,sAge, sysdate, to_date(sExe

PL/Sql 中创建、调试、调用存储过程

存储过程  所用函数说明  功能:求和与差  原形:GetSumAndSub(p1 in number , p2 in number ,m out number , b out number)   参数:m=p1+p2 b=p1-p2  1.先建存储过程 左边的浏览窗口选择 procedures ,会列出所有的存储过程,右击文件夹procedures单击菜单"new",弹出  template wizard窗口, name框中输入 GetSumAndSub ,parameters中填入

x64 PL/SQL 连接 Oralce 提示 Could not initialize oci.dll

在 x64 的 Win10 上重新安装了 Oralce 后,通过 PL/SQL 连接数据库时,提示如下错误信息 环境 windows7 64bit Oracle win64 11gR2 PL/SQL v9.0 详细错误信息 [plain] view plaincopy Initialization error Could not initialize "C:\oracle\product\11.2.0\dbhome_1\bin\oci.dll" Make sure you have t

PL/SQL精明的调用栈分析

原文:http://www.oracle.com/technetwork/issue-archive/2014/14-jan/o14plsql-2045346.html The three DBMS_UTILITY functions (DBMS_UTILITY.FORMAT_CALL_STACK, DBMS_UTILITY.FORMAT_ERROR_STACK, and DBMS_UTILITY.FORMAT_ERROR_ BACKTRACE) have been crucial aids i